Inhaltsverzeichnis
NumPy Datentypen
Die Stärke von NumPy liegt in seinem effizienten ndarray
(N-dimensionales Array)-Objekt. Im Gegensatz zu Python-Listen sind NumPy-Arrays homogen; alle Elemente teilen denselben Datentyp. Diese Homogenität ermöglicht optimierte vektorisierte Operationen, was die Leistung erheblich steigert. NumPy bietet eine Vielzahl von Datentypen, von denen viele denen in C und Fortran ähneln, jeder mit einem Kurzcode:
Datentyp | Beschreibung | NumPy Typcode |
---|---|---|
Integer | Vorzeichenbehaftete Ganzzahl | int8 , int16 , int32 , int64 |
Unsigned Integer | Vorzeichenlose Ganzzahl | uint8 , uint16 , uint32 , uint64 |
Gleitkommazahl | Gleitkommazahlen mit einfacher und doppelter Genauigkeit | float16 , float32 , float64 (üblicherweise float ) |
Komplexe Gleitkommazahl | Komplexe Zahlen mit einfacher und doppelter Genauigkeit | complex64 , complex128 (üblicherweise complex ) |
Boolesch | Wahrheitswerte | bool |
Zeichenkette | Zeichenketten fester Länge | str (oder string_ mit Länge, z.B. string_10 ) |
Unicode | Unicode-Zeichenketten fester Länge | unicode_ (z.B. unicode_10 ) |
Objekt | Beliebige Python-Objekte | object |
Datentypen angeben:
Beim Erstellen eines Arrays können Sie den Datentyp explizit mit dem Argument dtype
festlegen:
import numpy as np
arr_int = np.array([1, 2, 3, 4], dtype=np.int32)
print(arr_int.dtype) # Ausgabe: int32
arr_float = np.array([1.1, 2.2, 3.3], dtype=np.float64)
print(arr_float.dtype) # Ausgabe: float64
arr_mixed = np.array([1, 2.5, 3]) # dtype wird auf float64 hochgestuft
print(arr_mixed.dtype) # Ausgabe: float64
Eine sorgfältige Auswahl des Datentyps ist entscheidend für die Speichereffizienz und die Leistung. Kleinere Typen (z. B. int32
) sparen Speicher, bergen aber die Gefahr eines Überlaufs, wenn die Werte ihren Bereich überschreiten.
Datentypkonvertierung
Die Konvertierung zwischen Datentypen ist üblich. NumPy bietet verschiedene Methoden:
1. Verwendung von astype()
:
astype()
erstellt eine Kopie mit dem neuen Datentyp:
arr_int = np.array([1, 2, 3], dtype=np.int32)
arr_float = arr_int.astype(np.float64)
print(arr_float) # Ausgabe: [1. 2. 3.]
print(arr_float.dtype) # Ausgabe: float64
2. Implizite Typkonvertierung:
NumPy konvertiert manchmal implizit Typen während Operationen:
arr_int = np.array([1, 2, 3])
arr_float = np.array([1.1, 2.2, 3.3])
result = arr_int + arr_float
print(result) # Ausgabe: [2.1 4.2 6.3]
print(result.dtype) # Ausgabe: float64
3. Verwendung von view()
(Vorsicht!):
view()
erstellt ein neues Array, das dieselben Daten teilt, aber einen anderen Typ hat. Änderungen an einer Ansicht wirken sich auf die andere aus. Dies ist speichereffizient, aber riskant:
arr_int = np.array([1, 2, 3], dtype=np.int32)
arr_view = arr_int.view(np.float32) # Potenziell gefährlich!
print(arr_view) # Ausgabe: [1. 2. 3.]
arr_view[0] = 10.5 # Ändert auch das Original!
print(arr_int) # Ausgabe: [10 2 3]
Das Verständnis der NumPy-Datentypen und der Konvertierung ist entscheidend für das Schreiben effizienten und zuverlässigen Codes. Wählen Sie geeignete Typen und verwenden Sie view()
vorsichtig, im Bewusstsein für möglichen Datenverlust oder unerwartetes Verhalten.