NumPy- Array-Umformung


Arrays umformen

Reshaping bedeutet, die Form eines Arrays zu ändern.

Die Form eines Arrays ist die Anzahl der Elemente in jeder Dimension.

Durch Umformen können wir Dimensionen hinzufügen oder entfernen oder die Anzahl der Elemente in jeder Dimension ändern.


Von 1-D auf 2-D umformen

Beispiel

Konvertieren Sie das folgende 1-D-Array mit 12 Elementen in ein 2-D-Array.

Die äußerste Dimension hat 4 Arrays mit jeweils 3 Elementen:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.reshape(4, 3)

print(newarr)

Umformen von 1-D zu 3-D

Beispiel

Konvertieren Sie das folgende 1-D-Array mit 12 Elementen in ein 3-D-Array.

Die äußerste Dimension hat 2 Arrays, die 3 Arrays mit jeweils 2 Elementen enthalten:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.reshape(2, 3, 2)

print(newarr)


Können wir uns in jede Form umformen?

Ja, solange die für die Umformung erforderlichen Elemente in beiden Formen gleich sind.

Wir können ein 1D-Array mit 8 Elementen in ein 2D-Array mit 4 Elementen in 2 Zeilen umformen, aber wir können es nicht in ein 2D-Array mit 3 Elementen und 3 Zeilen umformen, da dies 3x3 = 9 Elemente erfordern würde.

Beispiel

Versuchen Sie, ein 1D-Array mit 8 Elementen in ein 2D-Array mit 3 Elementen in jeder Dimension zu konvertieren (führt zu einem Fehler):

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

newarr = arr.reshape(3, 3)

print(newarr)

Rückgaben Kopieren oder Anzeigen?

Beispiel

Überprüfen Sie, ob das zurückgegebene Array eine Kopie oder eine Ansicht ist:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

print(arr.reshape(2, 4).base)

Das obige Beispiel gibt das ursprüngliche Array zurück, es handelt sich also um eine Ansicht.


Unbekannte Dimension

Sie dürfen eine "unbekannte" Dimension haben.

Das bedeutet, dass Sie für eine der Dimensionen in der Umformungsmethode keine genaue Zahl angeben müssen.

Übergeben -1Sie den Wert und NumPy berechnet diese Zahl für Sie.

Beispiel

Konvertieren Sie ein 1D-Array mit 8 Elementen in ein 3D-Array mit 2x2 Elementen:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

newarr = arr.reshape(2, 2, -1)

print(newarr)

Hinweis: Wir können nicht -1zu mehr als einer Dimension übergehen.


Abflachen der Arrays

Array glätten bedeutet, ein mehrdimensionales Array in ein 1D-Array umzuwandeln.

Wir können reshape(-1)dies tun.

Beispiel

Konvertieren Sie das Array in ein 1D-Array:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

newarr = arr.reshape(-1)

print(newarr)

Hinweis: Es gibt viele Funktionen zum Ändern der Formen von Arrays in numpy flattenund ravelauch zum Neuanordnen der Elemente rot90, flip, fliplr, flipudusw. Diese fallen unter den Abschnitt „Intermediate to Advanced“ von numpy.


Testen Sie sich mit Übungen

Übung:

Verwenden Sie die richtige NumPy-Methode, um die Form eines Arrays von 1-D in 2-D zu ändern.

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.(4, 3)