3  Größe, Struktur und Typ

Wenn man sich nicht mehr sicher ist, welche Struktur oder Form ein Array hat oder oder diese Größen zum Beispiel für Schleifen nutzen möchte, bietet NumPy folgende Funktionen für das Auslesen dieser Größen an.

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

np.shape() gibt die Längen der einzelnen Dimension in Form einer Liste zurück.

np.shape(matrix)
(2, 3)

Die native Python Funktion len() gibt dagegen nur die Länge der ersten Dimension, also die Anzahl der Elemente in den äußeren Klammern wieder. Im obrigen Beispiel würde len() also die beiden Listen [1, 2, 3] und [4, 5, 6] sehen.

len(matrix)
2

Die Funktion np.ndym() gibt im Gegensatz zu np.shape() nur die Anzahl der Dimensionen zurück.

np.ndim(matrix)
2

np.ndim() gibt die Länge der Liste von np.shape() aus

len(np.shape(matrix))
2

Möchte man die Anzahl aller Elemente in einem Array ausgeben kann man die Funktion np.size() benutzen.

np.size(matrix)
6

NumPy Arrays können verschiedene Datentypen beinhalten. Im folgenden haben wir drei verschiedene Arrays mit einem jeweils anderen Datentyp.

typ_a = np.array([1, 2, 3, 4, 5])
typ_b = np.array([0.1, 0.2, 0.3, 0.4, 0.5])
typ_c = np.array(["Montag", "Dienstag", "Mittwoch"])

Mit der Methode np.dtype können wir den Datentyp von Arrays ausgeben lassen. Meist wird dabei der Typ plus eine Zahl ausgegeben, welche die zum Speichern benötigte Bytezahl angibt. Das Array typ_a beinhaltet den Datentyp int64, also ganze Zahlen.

print(typ_a.dtype)
int64

Das Array typ_b beinhaltet den Datentyp float64, wobei float für Gleitkommazahlen steht.

print(typ_b.dtype)
float64

Das Array typ_c beinhaltet den Datentyp U8, wobei das U für Unicode steht. Hier wird als Unicodetext gespeichert.

print(typ_c.dtype)
<U8

Im folgenden finden Sie eine Tabelle mit den typischen Datentypen, die sie häufig antreffen.

Datentyp Numpy Name Beispiele
Wahrheitswert bool [True, False, True]
Ganze Zahl int [-2, 5, -6, 7, 3]
positive Ganze Zahlen uint [1, 2, 3, 4, 5]
Kommazahlen float [1.3, 7.4, 3.5, 5.5]
komplexe zahlen complex [-1 + 9j, 2-77j, 72 + 11j]
Textzeichen U [“montag”, “dienstag”]
Tabelle 3.1: Typische Datentypen in NumPy

Gegeben sei folgende Matrix:

matrix = np.array([[[ 0,  1,  2,  3],
                 [ 4,  5,  6,  7],
                 [ 8,  9, 10, 11]],

                [[12, 13, 14, 15],
                 [16, 17, 18, 19],
                 [20, 21, 22, 23]],

                [[24, 25, 26, 27],
                 [28, 29, 30, 31],
                 [32, 33, 34, 35]]])

Bestimmen Sie durch anschauen die Anzahl an Dimensionen und die Länge jeder Dimension. Von welchem Typ ist der Inhalt dieser Matrix?

Überprüfen Sie daraufhin Ihre Ergebnisse in dem Sie die passenden NumPy-Funktionen anwenden.

matrix = np.array([[[ 0,  1,  2,  3],
                 [ 4,  5,  6,  7],
                 [ 8,  9, 10, 11]],

                [[12, 13, 14, 15],
                 [16, 17, 18, 19],
                 [20, 21, 22, 23]],

                [[24, 25, 26, 27],
                 [28, 29, 30, 31],
                 [32, 33, 34, 35]]])

anzahl_dimensionen = np.ndim(matrix)

print("Anzahl unterschiedlicher Dimensionen: ", anzahl_dimensionen)

laenge_dimensionen = np.shape(matrix)

print("Länge der einzelnen DImensionen: ", laenge_dimensionen)

print(matrix.dtype)
Anzahl unterschiedlicher Dimensionen:  3
Länge der einzelnen DImensionen:  (3, 3, 4)
int64