HOWTO · NumPy
Leeres NumPy-Array erstellen
Lernen Sie, wie Sie in Python mit numpy.zeros() und numpy.empty() leere NumPy-Arrays erstellen. Dieser Leitfaden bietet klare Beispiele und ausführliche Erklärungen zu jeder Methode und hilft Ihnen, Arrays für Ihre Datenverarbeitungsaufgaben effizient zu initialisieren. Ob Anfänger oder erfahrener Programmierer – Sie finden hier wertvolle Einblicke, um Ihre Programmierkenntnisse zu verbessern.
Auf dieser Seite
Verwenden Sie numpy.zeros(), wenn jedes Element mit 0 beginnen soll. Verwenden Sie numpy.empty(), wenn Sie jedem Element einen Wert zuweisen, bevor Sie es auslesen. Trotz des Namens erstellt numpy.empty() weiterhin die angeforderte Anzahl von Elementen; ihre Anfangswerte werden lediglich nicht festgelegt. Das Argument shape beschreibt die Dimensionen des Arrays: Eine einzelne Ganzzahl wie 5 erstellt ein eindimensionales Array, während ein Tupel wie (3, 4) drei Zeilen und vier Spalten erstellt.
Ein mit Nullen gefülltes Array mit numpy.zeros() erstellen
numpy.zeros() reserviert Speicher für ein Array und initialisiert alle Elemente mit 0. Übergeben Sie eine Ganzzahl für ein eindimensionales Array oder ein Tupel für mehrere Dimensionen. Standardmäßig verwendet NumPy einen Gleitkomma-Datentyp, daher können die ausgegebenen Werte Dezimalstellen enthalten. Übergeben Sie dtype=int, wenn Sie stattdessen ganzzahlige Elemente benötigen. Verwenden Sie diese Funktion, wenn ein bekannter Anfangswert nützlich ist – etwa wenn spätere Berechnungen nur einige Positionen aktualisieren sollen und die übrigen den Wert 0 behalten sollen.
Dieses Beispiel erstellt sowohl ein eindimensionales Array als auch ein zweidimensionales Ganzzahl-Array und aktualisiert anschließend eine Position. Es gibt die Werte und das Tupel aus, das vom Attribut shape des Arrays zurückgegeben wird.
Führen Sie dieses Beispiel aus:
import numpy as np
values = np.zeros(5)
matrix = np.zeros((3, 4), dtype=int)
values[2] = 7
print(values)
print(matrix.shape)
[0. 0. 7. 0. 0.]
(3, 4)
Da numpy.zeros() jede Position initialisiert, eignet sich die Funktion auch, wenn Sie das Array schrittweise füllen möchten. Der anfängliche Datentyp ist wichtig: Ein Ganzzahl-Array speichert ganzzahlige Werte, während ein Gleitkomma-Array Bruchzahlen darstellen kann. Der Parameter shape gibt stets die Dimensionen an; er bedeutet nicht grundsätzlich „Zeilen und Spalten“. Eine Form mit einem einzigen Wert wie 5 hat eine Dimension, (3, 4) dagegen zwei.
Ein nicht initialisiertes Array mit numpy.empty() erstellen
Bei gewöhnlichen numerischen Datentypen erstellt numpy.empty() ein Array mit der angeforderten Form, initialisiert seine Elemente jedoch nicht. Ihre Anfangswerte sind daher nicht festgelegt. Beim Objektdatentyp ist das anders: Beispielsweise initialisiert np.empty(2, dtype=object) beide Elemente mit None. Weisen Sie jedem Element einen gültigen Wert zu, bevor Sie es auslesen, und verlassen Sie sich nicht auf den Anfangsinhalt numerischer Arrays.
Verwenden Sie diese Funktion, wenn Ihr Programm jedes Element sofort füllen kann und das Überspringen des Initialisierungsschritts für die jeweilige Arbeitslast nützlich ist. Ob dadurch spürbar Zeit gespart wird, hängt von der Arraygröße, den anschließenden Zuweisungen, der Hardware und den übrigen Arbeitsschritten ab; einen allgemeinen Geschwindigkeitsvorteil gibt es nicht. Wenn Sie zuverlässige Anfangswerte benötigen oder nur einige Positionen aktualisieren, verwenden Sie stattdessen numpy.zeros().
Das folgende Beispiel weist jeder Position einen Wert zu, bevor das Array ausgelesen wird. Sie können die Dimensionen oder den Datentyp ändern, solange Sie dieselbe Regel befolgen: Schreiben Sie alle Elemente, bevor Sie sie verwenden.
import numpy as np
values = np.empty((2, 3), dtype=int)
values[:] = [[1, 2, 3], [4, 5, 6]]
print(values)
[[1 2 3]
[4 5 6]]
Für ein eindimensionales Array gehen Sie genauso vor: Verwenden Sie values = np.empty(5, dtype=int) und weisen Sie anschließend allen fünf Positionen einen Wert zu, bevor Sie einen davon auslesen. Ein Tupel als Form funktioniert für weitere Dimensionen ebenso. Der Name numpy.empty() bezeichnet die fehlende Initialisierung, nicht ein Array ohne Elemente; Form und Anzahl der Elemente werden weiterhin durch das übergebene Argument bestimmt.