3 Stimmen

Umformung eines Numpy-Arrays in Python

Ich habe ein 48x365 Element Numpy-Array, wo jedes Element eine Liste mit 3 Ganzzahlen ist. Ich möchte es in ein 1x17520 Array umwandeln können, wobei alle Listen als Elemente intakt sind. Mit

np.reshape(-1)

scheint die Elemente in drei separate Ganzzahlen aufzuteilen und ergibt ein 1x52560-Array. Ich brauche also entweder einen neuen Weg, um das ursprüngliche Array neu zu ordnen, oder eine Möglichkeit, die Elemente im neuen np.reshape-Array (die immer noch in Ordnung sind) wieder in 3er-Listen zu gruppieren.

Vielen Dank für Ihre Hilfe.

6voto

senderle Punkte 135243

Gibt es einen Grund, warum Sie das nicht ausdrücklich tun können? Wie in:

>>> a = numpy.arange(17520 * 3).reshape(48, 365, 3)
>>> a.reshape((17520,3))
array([[    0,     1,     2],
       [    3,     4,     5],
       [    6,     7,     8],
       ..., 
       [52551, 52552, 52553],
       [52554, 52555, 52556],
       [52557, 52558, 52559]])

Sie können es auch tun mit -1 Es muss nur mit einem anderen Arg in der entsprechenden Größe kombiniert werden.

>>> a.reshape((17520,-1))
array([[    0,     1,     2],
       [    3,     4,     5],
       [    6,     7,     8],
       ..., 
       [52551, 52552, 52553],
       [52554, 52555, 52556],
       [52557, 52558, 52559]])

または

>>> a.reshape((-1,3))
array([[    0,     1,     2],
       [    3,     4,     5],
       [    6,     7,     8],
       ..., 
       [52551, 52552, 52553],
       [52554, 52555, 52556],
       [52557, 52558, 52559]])

Etwas später fiel mir ein, dass man auch ein Datensatz-Array erstellen könnte - das könnte in manchen Situationen sinnvoll sein:

a = numpy.recarray((17520,), dtype=[('x', int), ('y', int), ('z', int)])

Dies kann auf die ursprüngliche Weise, die Sie versucht haben, umgestaltet werden, d. h. reshape(-1) . Dennoch, wie larsmans Kommentar sagt, nur die Behandlung Ihrer Daten als 3d Array ist am einfachsten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X