NumPy-Datentypen

NumPy unterstützt weit mehr Datentypen als die in Python integrierten Typen, und sie entsprechen im Wesentlichen den Datentypen der Sprache C, wobei einige von ihnen den in Python integrierten Typen entsprechen. Die folgende Tabelle listet die häufig verwendeten grundlegenden NumPy-Typen auf.

Name Beschreibung
bool_ Boolescher Datentyp (True oder False)
int_ Standard-Ganzzahltyp (ähnlich long in C, int32 oder int64)
intc Entspricht dem int-Typ in C, in der Regel int32 oder int64
intp Für die Indizierung verwendeter Ganzzahltyp (ähnlich ssize_t in C, im Allgemeinen weiterhin int32 oder int64)
int8 Byte (-128 bis 127)
int16 Ganzzahl (-32768 bis 32767)
int32 Ganzzahl (-2147483648 bis 2147483647)
int64 Ganzzahl (-9223372036854775808 bis 9223372036854775807)
uint8 Vorzeichenlose Ganzzahl (0 bis 255)
uint16 Vorzeichenlose Ganzzahl (0 bis 65535)
uint32 Vorzeichenlose Ganzzahl (0 bis 4294967295)
uint64 Vorzeichenlose Ganzzahl (0 bis 18446744073709551615)
float_ Abkürzung des Typs float64
float16 Gleitkommazahl mit halber Genauigkeit, einschließlich: 1 Vorzeichenbit, 5 Exponentbits, 10 Mantissenbits
float32 Gleitkommazahl mit einfacher Genauigkeit, einschließlich: 1 Vorzeichenbit, 8 Exponentbits, 23 Mantissenbits
float64 Gleitkommazahl mit doppelter Genauigkeit, einschließlich: 1 Vorzeichenbit, 11 Exponentenbits, 52 Mantissenbits
complex_ Abkürzung des Typs complex128, d. h. eine 128-Bit-komplexe Zahl
complex64 Komplexe Zahl, dargestellt durch zwei 32-Bit-Gleitkommazahlen (Real- und Imaginärteil)
complex128 Komplexe Zahl, dargestellt durch zwei 64-Bit-Gleitkommazahlen (Real- und Imaginärteil)

Die numerischen Typen von NumPy sind tatsächlich Instanzen von dtype-Objekten, wobei jedes einem eindeutigen Zeichen entspricht, darunter np.bool_, np.int32, np.float32 und so weiter.


Datentypobjekt (dtype)

Datentypobjekte (Instanzen der Klasse numpy.dtype) werden verwendet, um zu beschreiben, wie der einem Array entsprechende Speicherbereich verwendet wird. Sie beschreiben die folgenden Aspekte der Daten:

  • Der Typ der Daten (Ganzzahl, Gleitkommazahl oder Python-Objekt)
  • Die Größe der Daten (z. B. wie viele Bytes eine Ganzzahl zur Speicherung verwendet)
  • Die Byte-Reihenfolge der Daten (Little-Endian oder Big-Endian)
  • Bei strukturierten Typen: die Namen der Felder, der Datentyp jedes Feldes und der Teil des Speicherblocks, den jedes Feld belegt
  • Wenn der Datentyp ein Unterarray ist, dann geben Sie an, welche Form und welchen Datentyp er hat.

Die Byte-Reihenfolge wird durch Vorabfestlegen des Datentyps<oder>entschieden.<Bedeutet Little-Endian (das niederwertigste Byte wird an der kleinsten Adresse gespeichert, d. h. die niederwertige Byte-Gruppe wird zuerst abgelegt).>Bedeutet Big-Endian (das höchstwertige Byte wird an der kleinsten Adresse gespeichert, d. h. die höherwertige Byte-Gruppe wird zuerst abgelegt).

dtype-Objekte werden mit der folgenden Syntax konstruiert:

numpy.dtype(object, align, copy)
  • object – das Datentypobjekt, in das konvertiert werden soll
  • align – wenn true, die Felder auffüllen, um es einem C-Struct ähnlich zu machen.
  • copy – das dtype-Objekt kopieren; wenn false, ist es eine Referenz auf das integrierte Datentypobjekt.

Beispiele

Als Nächstes können wir dies anhand von Beispielen nachvollziehen.

Beispiel 1

import numpy as np # Verwendung von Skalartypen dt = np.dtype(np.int32) print(dt)

Das Ausgabeergebnis ist:

int32

Beispiel 2

import numpy as np # Die vier Datentypen int8, int16, int32, int64 können durch die Zeichenfolgen 'i1', 'i2', 'i4', 'i8' ersetzt werden dt = np.dtype('i4') print(dt)

Das Ausgabeergebnis ist:

int32

Beispiel 3

import numpy as np # Byte-Reihenfolge-Anmerkung dt = np.dtype('<i4') print(dt)

Das Ausgabeergebnis ist:

int32

Das folgende Beispiel demonstriert die Verwendung strukturierter Datentypen; die Typfelder und die entsprechenden tatsächlichen Typen werden erstellt.

Beispiel 4

# Zuerst einen strukturierten Datentyp erstellen import numpy as np dt = np.dtype([('age',np.int8)]) print(dt)

Das Ausgabeergebnis ist:

[('age', 'i1')]

Beispiel 5

# Den Datentyp auf ein ndarray-Objekt anwenden import numpy as np dt = np.dtype([('age',np.int8)]) a = np.array([(10,),(20,),(30,)], dtype = dt) print(a)

Das Ausgabeergebnis ist:

[(10,) (20,) (30,)]

Beispiel 6

# Der Name des Typfelds kann verwendet werden, um auf die tatsächliche age-Spalte zuzugreifen import numpy as np dt = np.dtype([('age',np.int8)]) a = np.array([(10,),(20,),(30,)], dtype = dt) print(a['age'])

Das Ausgabeergebnis ist:

[10 20 30]

Das folgende Beispiel definiert einen strukturierten Datentyp student, der ein Zeichenkettenfeld name, ein Ganzzahlfeld age und ein Gleitkommazahlfeld marks enthält, und wendet diesen dtype auf ein ndarray-Objekt an.

Beispiel 7

import numpy as np student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) print(student)

Das Ausgabeergebnis ist:

[('name', 'S20'), ('age', 'i1'), ('marks', 'f4')]

Beispiel 8

import numpy as np student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) a = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = student) print(a)

Das Ausgabeergebnis ist:

[(b'abc', 21, 50.) (b'xyz', 18, 75.)]

Jeder integrierte Typ hat einen eindeutigen Zeichencode, der ihn definiert, wie folgt:

Zeichen Entsprechender Typ
bBoolean
i(Vorzeichenbehaftete) Ganzzahl
u Ganzzahl ohne Vorzeichen
fGleitkommazahl
c Komplexe Gleitkommazahl
m timedelta (Zeitintervall)
M datetime (Datum und Uhrzeit)
O (Python-)Objekt
S, a (Byte-)String
U Unicode
V Rohdaten (void)
Weitere Erweiterungen