NumPy - Datentypen
NumPy unterstützt eine viel größere Auswahl an numerischen Typen als Python. Die folgende Tabelle zeigt verschiedene in NumPy definierte skalare Datentypen.
Sr.Nr. | Datentypen & Beschreibung |
---|---|
1 | bool_ Boolescher Wert (Richtig oder Falsch), der als Byte gespeichert wird |
2 | int_ Standard-Integer-Typ (wie C long; normalerweise entweder int64 oder int32) |
3 | intc Identisch mit C int (normalerweise int32 oder int64) |
4 | intp Für die Indizierung verwendete Ganzzahl (wie C ssize_t; normalerweise entweder int32 oder int64) |
5 | int8 Byte (-128 bis 127) |
6 | int16 Ganzzahl (-32768 bis 32767) |
7 | int32 Ganzzahl (-2147483648 bis 2147483647) |
8 | int64 Ganzzahl (-9223372036854775808 bis 9223372036854775807) |
9 | uint8 Ganzzahl ohne Vorzeichen (0 bis 255) |
10 | uint16 Ganzzahl ohne Vorzeichen (0 bis 65535) |
11 | uint32 Ganzzahl ohne Vorzeichen (0 bis 4294967295) |
12 | uint64 Ganzzahl ohne Vorzeichen (0 bis 18446744073709551615) |
13 | float_ Abkürzung für float64 |
14 | float16 Float mit halber Genauigkeit: Vorzeichenbit, 5-Bit-Exponent, 10-Bit-Mantisse |
15 | float32 Float mit einfacher Genauigkeit: Vorzeichenbit, 8-Bit-Exponent, 23-Bit-Mantisse |
16 | float64 Float mit doppelter Genauigkeit: Vorzeichenbit, 11-Bit-Exponent, 52-Bit-Mantisse |
17 | complex_ Abkürzung für complex128 |
18 | complex64 Komplexe Zahl, dargestellt durch zwei 32-Bit-Floats (reale und imaginäre Komponenten) |
19 | complex128 Komplexe Zahl, dargestellt durch zwei 64-Bit-Floats (reale und imaginäre Komponenten) |
NumPy-numerische Typen sind Instanzen von dtype-Objekten (Datentypobjekten) mit jeweils eindeutigen Merkmalen. Die dtypes sind als np.bool_, np.float32 usw. verfügbar.
Datentypobjekte (dtype)
Ein Datentypobjekt beschreibt die Interpretation eines festen Speicherblocks, der einem Array entspricht, in Abhängigkeit von den folgenden Aspekten:
Datentyp (Integer-, Float- oder Python-Objekt)
Datengröße
Bytereihenfolge (Little-Endian oder Big-Endian)
Bei strukturiertem Typ die Namen der Felder, der Datentyp jedes Felds und ein Teil des Speicherblocks, der von jedem Feld verwendet wird.
Wenn der Datentyp ein Subarray ist, dessen Form und Datentyp
Die Bytereihenfolge wird durch das Präfix '<' oder '>' für den Datentyp festgelegt. '<' bedeutet, dass die Codierung Little-Endian ist (niedrigstwertig wird in der kleinsten Adresse gespeichert). '>' bedeutet, dass die Codierung Big-Endian ist (das höchstwertige Byte wird in der kleinsten Adresse gespeichert).
Ein dtype-Objekt wird mit der folgenden Syntax erstellt:
numpy.dtype(object, align, copy)
Die Parameter sind -
Object - In Datentypobjekt konvertieren
Align - Wenn true, wird dem Feld eine Auffüllung hinzugefügt, damit es der C-Struktur ähnelt
Copy- Erstellt eine neue Kopie des Objekts dtype. Wenn false, verweist das Ergebnis auf das integrierte Datentypobjekt
Beispiel 1
# using array-scalar type
import numpy as np
dt = np.dtype(np.int32)
print dt
Die Ausgabe ist wie folgt -
int32
Beispiel 2
#int8, int16, int32, int64 can be replaced by equivalent string 'i1', 'i2','i4', etc.
import numpy as np
dt = np.dtype('i4')
print dt
Die Ausgabe ist wie folgt -
int32
Beispiel 3
# using endian notation
import numpy as np
dt = np.dtype('>i4')
print dt
Die Ausgabe ist wie folgt -
>i4
Die folgenden Beispiele zeigen die Verwendung eines strukturierten Datentyps. Hier ist der Feldname und der entsprechende skalare Datentyp zu deklarieren.
Beispiel 4
# first create structured data type
import numpy as np
dt = np.dtype([('age',np.int8)])
print dt
Die Ausgabe ist wie folgt -
[('age', 'i1')]
Beispiel 5
# now apply it to ndarray object
import numpy as np
dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(30,)], dtype = dt)
print a
Die Ausgabe ist wie folgt -
[(10,) (20,) (30,)]
Beispiel 6
# file name can be used to access content of age column
import numpy as np
dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(30,)], dtype = dt)
print a['age']
Die Ausgabe ist wie folgt -
[10 20 30]
Beispiel 7
Die folgenden Beispiele definieren einen strukturierten Datentyp namens student mit einem Stringfeld 'Name', ein integer field 'Alter' und a float field'Marken'. Dieser Typ wird auf das ndarray-Objekt angewendet.
import numpy as np
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')])
print student
Die Ausgabe ist wie folgt -
[('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
Die Ausgabe ist wie folgt -
[('abc', 21, 50.0), ('xyz', 18, 75.0)]
Jeder integrierte Datentyp verfügt über einen Zeichencode, der ihn eindeutig identifiziert.
'b' - Boolescher Wert
'i' - (vorzeichenbehaftete) Ganzzahl
'u' - Ganzzahl ohne Vorzeichen
'f' - Gleitkomma
'c' - komplexer Gleitkomma
'm' - Zeitdelta
'M' - Datum / Uhrzeit
'O' - (Python) Objekte
'S', 'a' - (Byte-) Zeichenfolge
'U' - Unicode
'V' - Rohdaten (nichtig)