NumPy Datentypen verstehen

NumPyBeginner
Jetzt üben

Einführung

Dieses Lab bietet eine Schritt-für-Schritt-Anleitung zum Verständnis und zur Verwaltung der verschiedenen Datentypen in NumPy. NumPy (Numerical Python) ist eine leistungsstarke Bibliothek, die Unterstützung für große, mehrdimensionale Arrays und Matrizen bietet, zusammen mit einer Sammlung mathematischer Funktionen, um effizient auf diese Arrays zu operieren. Im Gegensatz zu Pythons integrierten Listen sind NumPy-Arrays speichereffizienter und schneller für numerische Berechnungen.

Sie lernen, wie Sie die Datentypen von NumPy-Arrays überprüfen, angeben und konvertieren. Das Verständnis von Datentypen ist entscheidend, da sie sowohl den Speicherverbrauch als auch die Rechenleistung beeinflussen. Alle Codierungen erfolgen in der Datei main.py unter Verwendung des Code-Editors, und Sie führen das Skript über das Terminal aus. Dieser praktische Ansatz hilft Ihnen, diese grundlegenden Konzepte zu erfassen, die für numerisches Rechnen und Datenanalyse unerlässlich sind.

Überprüfung des Datentyps eines Arrays

Wenn Sie ein NumPy-Array erstellen, leitet NumPy automatisch den am besten geeigneten Datentyp für seine Elemente ab. Sie können diesen abgeleiteten Datentyp einfach mit dem dtype-Attribut des Arrays überprüfen.

Das dtype-Attribut teilt Ihnen mit, welche Art von Daten das Array enthält (z. B. Ganzzahlen, Gleitkommazahlen usw.) und wie viel Speicher jedes Element verwendet. Diese Informationen sind wichtig, um zu verstehen, wie NumPy mathematische Operationen auf Ihren Daten verarbeiten wird.

Öffnen Sie zuerst die Datei main.py im Dateiexplorer auf der linken Seite. Wir werden Code hinzufügen, um ein einfaches Array zu erstellen und dann seinen Datentyp auszugeben.

Fügen Sie den folgenden Code zu main.py hinzu:

## Create a NumPy array from a list of integers
## np.array() converts a Python list into a NumPy array
arr_int = np.array([1, 2, 3, 4, 5])

## Print the data type of the array
## .dtype shows the data type of array elements
print("Data type of arr_int:", arr_int.dtype)

Speichern Sie nun die Datei und führen Sie sie im Terminal aus, um die Ausgabe zu sehen.

python main.py

Sie sehen den Datentyp des Arrays, der auf der Konsole ausgegeben wird. Der spezifische Ganzzahltyp (wie int64) hängt von der Architektur Ihres Systems ab.

Data type of arr_int: int64

Dies bestätigt, dass NumPy die Elemente korrekt als Ganzzahlen identifiziert hat.

Festlegen eines Datentyps bei der Erstellung

Während die automatische Typableitung von NumPy nützlich ist, müssen Sie oft explizit den Datentyp eines Arrays definieren, um die Speichereffizienz zu verbessern oder die Anforderungen einer bestimmten Berechnung zu erfüllen. Dies können Sie mit dem dtype-Argument während der Array-Erstellung tun.

Verschiedene Datentypen verwenden unterschiedliche Mengen an Speicher:

  • int32 verwendet 4 Bytes pro Element
  • int64 verwendet 8 Bytes pro Element
  • float32 verwendet 4 Bytes pro Element
  • float64 verwendet 8 Bytes pro Element

Bei großen Arrays kann die Wahl des richtigen Datentyps erheblich Speicher sparen und potenziell die Leistung verbessern.

Erstellen wir ein Array und geben seinen Datentyp als 32-Bit-Gleitkommazahl an. Ändern Sie Ihre main.py-Datei mit dem folgenden Code. Sie können den Code aus dem vorherigen Schritt auskommentieren oder entfernen.

## Create an array and specify the data type as float32
## The dtype parameter tells NumPy to store each number as a 32-bit float
arr_float = np.array([1.0, 2.5, 3.8], dtype=np.float32)

## Print the data type and the array
print("Data type of arr_float:", arr_float.dtype)
print("Array arr_float:", arr_float)

Speichern Sie die Datei und führen Sie sie erneut aus.

python main.py

Die Ausgabe zeigt, dass das Array mit dem von Ihnen angegebenen float32-Datentyp erstellt wurde.

Data type of arr_float: float32
Array arr_float: [1.  2.5 3.8]

Sie können verschiedene Datentyp-Strings oder NumPy-Objekte verwenden, wie z. B. 'f4' für float32, 'i8' für int64 oder np.bool_ für boolesche Werte.

Konvertierung des Datentyps eines Arrays

Nachdem ein Array erstellt wurde, müssen Sie möglicherweise seinen Datentyp konvertieren. Die Methode .astype() wird für diesen Zweck verwendet. Diese Methode ändert das ursprüngliche Array nicht, sondern gibt stattdessen ein neues Array mit dem angegebenen Datentyp zurück.

Die Typkonvertierung ist nützlich, wenn Sie:

  • Operationen durchführen müssen, die einen bestimmten Datentyp erfordern
  • Den Speicherverbrauch reduzieren möchten, indem Sie zu kleineren Datentypen konvertieren
  • Daten für Funktionen vorbereiten müssen, die bestimmte Typen erwarten

Erstellen wir ein Ganzzahl-Array und konvertieren es dann in ein Gleitkomma-Array. Aktualisieren Sie Ihre main.py-Datei mit dem folgenden Code:

## Create an integer array
## np.arange(5) creates an array with numbers from 0 to 4 (5 elements total)
original_arr = np.arange(5)
print("Original array:", original_arr)
print("Original dtype:", original_arr.dtype)

## Convert the array to float64
## .astype() creates a new array with the specified data type
converted_arr = original_arr.astype(np.float64)
print("Converted array:", converted_arr)
print("Converted dtype:", converted_arr.dtype)

Speichern Sie die Datei und führen Sie sie aus.

python main.py

Die Ausgabe zeigt, dass original_arr ein Ganzzahl-Array bleibt, während converted_arr ein neues Array mit dem Datentyp float64 ist.

Original array: [0 1 2 3 4]
Original dtype: int64
Converted array: [0. 1. 2. 3. 4.]
Converted dtype: float64

Dies ist eine sichere Methode, um Typkonvertierungen durchzuführen, ohne Ihre Originaldaten zu verlieren.

Arbeiten mit anderen Datentypen

NumPy unterstützt eine breite Palette von Datentypen, die über reine Ganzzahlen und Gleitkommazahlen hinausgehen, einschließlich boolescher Werte und komplexer Zahlen. Zu verstehen, wie NumPy diese handhabt, kann sehr nützlich sein.

Boolesche Arrays sind besonders nützlich für:

  • Filtern von Daten (Auswählen von Elementen, die bestimmte Bedingungen erfüllen)
  • Logische Operationen
  • Maskieren von Arrays

Sie können beispielsweise ein Array von booleschen Werten erstellen, die Wahr/Falsch-Bedingungen darstellen.

Erstellen wir ein boolesches Array. Aktualisieren Sie Ihre main.py-Datei:

## Create a boolean array
## np.bool_ is NumPy's boolean data type (stores True/False values)
arr_bool = np.array([True, False, True], dtype=np.bool_)

print("Boolean array:", arr_bool)
print("Boolean array dtype:", arr_bool.dtype)

Speichern und führen Sie das Skript aus.

python main.py

Die Ausgabe zeigt das boolesche Array und seinen entsprechenden Datentyp an.

Boolean array: [ True False  True]
Boolean array dtype: bool

Sie können auch mit der Funktion np.issubdtype() überprüfen, ob ein Datentyp zu einer allgemeinen Kategorie gehört (wie Ganzzahl oder Gleitkommazahl). Dies ist hilfreich beim Schreiben von Funktionen, die mehrere numerische Typen verarbeiten können.

Zusammenfassung

In diesem Lab haben Sie die Grundlagen der Arbeit mit Datentypen in NumPy gelernt. Sie verstehen nun:

  • Was NumPy-Arrays sind und warum sie effizienter als Python-Listen sind
  • Wie Arrays mit np.array() und np.arange() erstellt werden
  • Wie der Datentyp eines Arrays mit dem .dtype-Attribut überprüft wird
  • Wie ein Datentyp während der Array-Erstellung mit dem dtype-Parameter angegeben wird
  • Wie der Datentyp eines Arrays mit der .astype()-Methode konvertiert wird
  • Die Speicherimplikationen verschiedener Datentypen (int32, int64, float32, float64)
  • Wie mit booleschen Arrays für Filterung und logische Operationen gearbeitet wird

Ein solides Verständnis von Datentypen ist unerlässlich für das Schreiben von effizientem und korrektem numerischem Code mit NumPy. Die Wahl des richtigen Datentyps kann sowohl den Speicherverbrauch als auch die Rechenleistung in Ihren Datenanalyseprojekten erheblich beeinflussen.