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 -1
Sie 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 -1
zu 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 flatten
und ravel
auch zum Neuanordnen der Elemente rot90
, flip
, fliplr
, flipud
usw. Diese fallen unter den Abschnitt „Intermediate to Advanced“ von numpy.