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
Das Ausgabeergebnis ist:
int32
Beispiel 2
Das Ausgabeergebnis ist:
int32
Beispiel 3
Das Ausgabeergebnis ist:
int32
Das folgende Beispiel demonstriert die Verwendung strukturierter Datentypen; die Typfelder und die entsprechenden tatsächlichen Typen werden erstellt.
Beispiel 4
Das Ausgabeergebnis ist:
[('age', 'i1')]
Beispiel 5
Das Ausgabeergebnis ist:
[(10,) (20,) (30,)]
Beispiel 6
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
Das Ausgabeergebnis ist:
[('name', 'S20'), ('age', 'i1'), ('marks', 'f4')]
Beispiel 8
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 |
|---|---|
| b | Boolean |
| i | (Vorzeichenbehaftete) Ganzzahl |
| u | Ganzzahl ohne Vorzeichen |
| f | Gleitkommazahl |
| c | Komplexe Gleitkommazahl |
| m | timedelta (Zeitintervall) |
| M | datetime (Datum und Uhrzeit) |
| O | (Python-)Objekt |
| S, a | (Byte-)String |
| U | Unicode |
| V | Rohdaten (void) |