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)