NumPy Tutorials

NumPy Datentypen und Konvertierungen meistern

Spread the love

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert