API · NumPy

Python-Funktion NumPy numpy.shape()

Verwende numpy.shape(), um die Dimensionen eines Arrays als Tupel zu erhalten, oder lies sie aus dem Attribut .shape aus.

Auf dieser Seite

Mit NumPys Funktion numpy.shape() lässt sich die Form eines Arrays ermitteln. Die Funktion gibt ein Tupel aus Ganzzahlen zurück; jeder Wert gibt die Länge einer Dimension an. (5, 3) bedeutet beispielsweise fünf Zeilen und drei Spalten. Das Tupel beschreibt die aktuelle Form der Eingabe. Dass Tupel unveränderlich sind, sagt nichts darüber aus, ob sich das Array selbst umformen lässt.

Syntax von numpy.shape()

Rufe numpy.shape(a) mit dem Wert auf, dessen Dimensionen du untersuchen möchtest. Das Argument a ist erforderlich und kann ein NumPy-Array oder ein anderer arrayähnlicher Wert sein, etwa eine verschachtelte Sequenz. Die Funktion gibt der Reihe nach ein Tupel mit einer Ganzzahl für jede Dimension zurück. Eine eindimensionale Eingabe hat einen Tupelwert; bei einer zweidimensionalen Eingabe stehen die Werte für Zeilen- und Spaltenlänge. Bei höherdimensionalen Eingaben kommt für jede weitere Achse eine Länge hinzu.

Beispiele für numpy.shape()

Das folgende Beispiel erstellt ein zweidimensionales NumPy-Array und gibt die von numpy.shape() ermittelten Dimensionen aus.

import numpy as np

array = np.array([[11, 12, 5], [15, 6, 10], [10, 8, 12], [12, 15, 8], [34, 78, 90]])
print(np.shape(array))
(5, 3)

Der erste Wert eines Tupels beschreibt die erste Achse, der zweite die zweite Achse und so weiter. Bei einem zweidimensionalen Array entsprechen diese Achsen den Zeilen und Spalten. So kannst du mit dem Ergebnis prüfen, wie die Daten angeordnet sind, bevor du eine Achse auswählst oder die Daten an eine andere Operation übergibst.

Ein Array, dessen einzige Achse keine Werte enthält, hat die Form (0,). Ein eindimensionales Array mit den Werten [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] hat die Form (20,). Ein Array mit fünf Zeilen und drei Spalten hat die Form (5, 3). Ein dreidimensionales Array, das aus drei Gruppen mit jeweils zwei Zeilen und drei Werten pro Zeile besteht, hat die Form (3, 2, 3). Diese Tupel geben die Längen der Achsen in der jeweiligen Reihenfolge an, nicht die im Array gespeicherten Werte. Das Komma im Ein-Element-Tupel (20,) ist Python-Syntax und unterscheidet ein Tupel von einer lediglich eingeklammerten Ganzzahl.

Dieses Python-Beispiel erstellt ein Array ohne Werte und ermittelt dessen Form. Es gibt nichts aus, weil es die Form einer Variablen zuweist, ohne print() aufzurufen.

import numpy as np

empty_array = np.array([])
empty_shape = np.shape(empty_array)

Die Funktion gibt die Längen der Dimensionen zurück, die sie aus der Eingabe ermittelt. Weicht das Ergebnis von deiner Erwartung ab, überprüfe, wie die Eingabe erstellt wurde und in welcher Reihenfolge ihre Sequenzen verschachtelt sind. Bei einem regulären zweidimensionalen Array gibt der erste Formwert beispielsweise die Anzahl der Zeilen und der zweite die Anzahl der Spalten an. NumPy ermittelt die in den Daten vorhandene Struktur, statt beabsichtigte Zeilen- oder Spaltenbezeichnungen abzuleiten. Bei verschachtelten Daten mit ungleich langen Teilsequenzen kann sich das Verhalten je nach NumPy-Version und Konvertierungsregeln unterscheiden. Verwende daher ein reguläres Array, wenn du konsistente Achsenlängen benötigst.

Das Attribut .shape verwenden

Ein NumPy-Array stellt seine Dimensionen auch über das Attribut .shape bereit. Für ein Array a liefert a.shape dasselbe Tupel wie numpy.shape(a). Verwende die Funktion, wenn du einen Wert an eine allgemeine Operation übergeben möchtest. Wenn du bereits ein Array hast und seine Dimensionen direkt auslesen willst, verwende das Attribut. Auf das Attribut greifst du ohne Klammern zu; numpy.shape() ist ein Funktionsaufruf.

Für ein Array mit fünf Zeilen und drei Spalten gibt a.shape beispielsweise (5, 3) zurück, genau wie numpy.shape(a). Keine der beiden Varianten verändert das Array; beide geben seine Dimensionen an. Wenn du ein Array umformst, zeigen beide Varianten beim nächsten Auslesen die aktualisierten Dimensionen. Das ist beim Debuggen der Datenaufbereitung hilfreich: Prüfe vor einer Operation die Form, um Anzahl und Reihenfolge der Achsen zu bestätigen, und verwende das zurückgegebene Tupel anschließend, um die betroffene Dimension zu finden. numpy.shape() ist eine Funktion, .shape dagegen ein Attribut des Arrays.