Types de données NumPy

NumPy prend en charge beaucoup plus de types de données que les types intégrés de Python, et ils correspondent essentiellement aux types de données du langage C, certains d'entre eux correspondant aux types intégrés de Python. Le tableau suivant répertorie les types de base NumPy couramment utilisés.

Name Description
bool_ Type de données booléen (True ou False)
int_ Type entier par défaut (similaire à long en C, int32 ou int64)
intc Identique au type int de C, généralement int32 ou int64
intp Type entier utilisé pour l'indexation (similaire à ssize_t en C, généralement encore int32 ou int64)
⟦0⟧ Octet (-128 à 127)
int16 Entier (-32768 à 32767)
int32 Entier (-2147483648 à 2147483647)
int64 Entier (-9223372036854775808 à 9223372036854775807)
uint8 Entier non signé (0 à 255)
uint16 Entier non signé (0 à 65535)
uint32 Entier non signé (0 à 4294967295)
uint64 Entier non signé (0 à 18446744073709551615)
float_ Abréviation du type float64
float16 Virgule flottante en demi-précision, comprenant : 1 bit de signe, 5 bits d'exposant, 10 bits de mantisse
float32 Virgule flottante en simple précision, comprenant : 1 bit de signe, 8 bits d'exposant, 23 bits de mantisse
float64 Virgule flottante à double précision, comprenant : 1 bit de signe, 11 bits d'exposant, 52 bits de mantisse
complex_ Abréviation du type complex128, c'est-à-dire un nombre complexe de 128 bits
complex64 Nombre complexe, représenté par deux nombres à virgule flottante de 32 bits (partie réelle et partie imaginaire)
complex128 Nombre complexe, représenté par deux nombres à virgule flottante de 64 bits (partie réelle et partie imaginaire)

Les types numériques de NumPy sont en fait des instances d'objets dtype, chacun correspondant à un caractère unique, notamment np.bool_, np.int32, np.float32, etc.


Objet de type de données (dtype)

Les objets de type de données (instances de la classe numpy.dtype) sont utilisés pour décrire comment la région de mémoire correspondant à un tableau est utilisée. Ils décrivent les aspects suivants des données :

  • Le type de données (entier, nombre à virgule flottante ou objet Python)
  • La taille des données (par exemple, combien d'octets un entier utilise pour son stockage)
  • L'ordre des octets des données (petit-boutiste ou gros-boutiste)
  • Dans le cas de types structurés, les noms des champs, le type de données de chaque champ et la partie du bloc mémoire qu'occupe chaque champ
  • Si le type de données est un sous-tableau, alors quelles sont sa forme et son type de données.

L'ordre des octets est déterminé en prédéfinissant le type de données<ou>pour décider.<Signifie little-endian (l'octet le moins significatif est stocké à la plus petite adresse, c'est-à-dire que le groupe d'octets de poids faible est placé en premier).>Signifie big-endian (l'octet le plus significatif est stocké à la plus petite adresse, c'est-à-dire que le groupe d'octets de poids fort est placé en premier).

Les objets dtype sont construits à l'aide de la syntaxe suivante :

numpy.dtype(object, align, copy)
  • object - l'objet de type de données vers lequel convertir
  • align - si vrai, remplir les champs pour le rendre similaire à une structure C.
  • copy - copie l'objet dtype ; si faux, il s'agit d'une référence à l'objet de type de données intégré.

Exemples

Ensuite, nous pouvons comprendre à travers des exemples.

Exemple 1

import numpy as np # Utilisation des types scalaires dt = np.dtype(np.int32) print(dt)

Le résultat de sortie est:

int32

Exemple 2

import numpy as np # Les quatre types de données int8, int16, int32, int64 peuvent être remplacés par les chaînes 'i1', 'i2', 'i4', 'i8' dt = np.dtype('i4') print(dt)

Le résultat de sortie est:

int32

Exemple 3

import numpy as np # Annotation de l'ordre des octets dt = np.dtype('<i4') print(dt)

Le résultat de sortie est:

int32

L'exemple suivant illustre l'utilisation de types de données structurés ; les champs de type et les types réels correspondants seront créés.

Exemple 4

# Commencez par créer un type de données structuré import numpy as np dt = np.dtype([('age',np.int8)]) print(dt)

Le résultat de sortie est:

[('age', 'i1')]

Exemple 5

# Appliquer le type de données à un objet ndarray import numpy as np dt = np.dtype([('age',np.int8)]) a = np.array([(10,),(20,),(30,)], dtype = dt) print(a)

Le résultat de sortie est:

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

Exemple 6

# Le nom du champ de type peut être utilisé pour accéder à la colonne age réelle import numpy as np dt = np.dtype([('age',np.int8)]) a = np.array([(10,),(20,),(30,)], dtype = dt) print(a['age'])

Le résultat de sortie est:

[10 20 30]

L'exemple suivant définit un type de données structuré student, contenant un champ de chaîne name, un champ entier age, et un champ à virgule flottante marks, et applique ce dtype à un objet ndarray.

Exemple 7

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

Le résultat de sortie est:

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

Exemple 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)

Le résultat de sortie est:

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

Chaque type intégré a un code de caractère unique qui le définit, comme suit :

Caractère Type correspondant
bBoolean
iEntier (signé)
u Entier non signé
fNombre à virgule flottante
c Nombre complexe à virgule flottante
m timedelta (intervalle de temps)
M datetime (date et heure)
O objet (Python)
S, a (chaîne d'octets)
U Unicode
V Données brutes (void)
Autres extensions