English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Description et exemple des types de données NumPy
Le type de données, ou dtype, est également un objet spécial qui contient les informations sur le bloc de mémoire que l'ndarray doit déclarer pour un type de données spécifique (qui est également appelé métadonnées, c'est-à-dire les données sur les données). Le dtype est la raison pour laquelle NumPy peut interagir de manière flexible avec d'autres systèmes de données. D'habitude, d'autres systèmes fournissent une correspondance entre un disque dur ou une mémoire et des données, ce qui rend très facile de lire et d'écrire des données en utilisant des langages de bas niveau tels que C ou Fortran.
Les types de données pris en charge par numpy sont plus nombreux que Types de données intégrés Pythonbeaucoup plus, ils peuvent être comparés aux types de données du langage C, certains types correspondant aux types intégrés de Python. Le tableau suivant énumère les types de base courants de NumPy.
Nom | Description |
int_ | Type d'entier par défaut (similaire à long en langage C, int32 ou int64) |
int8 | Octets (-128 to 127) |
int16 | Entiers (-32768 to 32767) |
int32 | Entiers (-2147483648 to 2147483647) |
int64 | Entiers (-9223372036854775808 to 9223372036854775807) |
intc | Comme le type int en C, généralement int32 ou int 64 |
intp | Type d'entier utilisé pour l'indexation (similaire à ssize_t en C, généralement int32 ou int64) |
uint8 | Entiers non signés (0 to 255) |
uint16 | Entiers non signés (0 to 65535) |
uint32 | Entiers non signés (0 to 4294967295) |
uint64 | Entiers non signés (0 to 18446744073709551615) |
float_ | float64 Abréviation du type |
float16 | Flottants de précision demi, y compris :1 bits de signe5 bits d'exponentiel10 bits de virgule décimale |
float32 | Flottants simples de précision, y compris :1 bits de signe8 bits d'exponentiel23 bits de virgule décimale |
float64 | Flottants doubles de précision, y compris :1 bits de signe11 bits d'exponentiel52 bits de virgule décimale |
complex_ | complex128 Abréviation du type, c'est-à-dire 128 Nombres complexes en bits |
complex64 | Les nombres complexes, représentés par 32 Flottants en bits (partie réelle et partie imaginaire) |
complex128 | Les nombres complexes, représentés par 64 Flottants en bits (partie réelle et partie imaginaire) |
bool_ | Type de données booléennes (True ou False) |
Il n'est pas nécessaire de se souvenir de ces dtype de NumPy, en particulier pour les débutants. Il suffit généralement de savoir quel est le type approximatif des données que vous traitez, qu'il s'agisse de nombres flottants, de nombres complexes, d'entiers, de valeurs booléennes, de chaînes ou d'objets Python normaux. Lorsque vous avez besoin de contrôler la manière dont les données sont stockées en mémoire et sur le disque (en particulier pour les ensembles de données massifs), il faut comprendre comment contrôler le type de stockage.
Les types numériques de numpy sont des instances de l'objet dtype et correspondent à des caractères uniques, y compris np.bool_, np.int32, np.float32etc.
L'objet type de données (dtype) est utilisé pour décrire comment l'espace mémoire correspondant à l'array est utilisé, ce qui dépend des aspects suivants :
Le type de données - Par exemple, les nombres flottants, les nombres complexes, les entiers, les valeurs booléennes, les chaînes ou les objets Python.La taille des données - Par exemple, combien d'octets sont utilisés pour stocker un entier.L'ordre des octets des données - Format de basse gamme ou de haute gamme
L'ordre des octets est déterminé par la pré-configuration de la"<"ou">"prévue pour le type de données. "<" signifie le format de basse gamme (la valeur minimale est stockée à l'adresse la plus petite, c'est-à-dire que les groupes de basse position sont placés en premier).">" signifie le format de haute gamme (les octets les plus importants sont stockés à l'adresse la plus petite, c'est-à-dire que les groupes de haute position sont placés en premier).
L'objet dtype est construit en utilisant la syntaxe suivante :
numpy.dtype(object, align, copy)
object - 要转换为的数据类型对象align - 如果为 true,填充字段使其类似 C 的结构体。copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用
接下来我们可以通过实例来理解。
>>> import numpy as np >>> a = np.dtype(np.float32) >>> print(a) float32
# int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替 >>> import numpy as np >>> a = np.dtype('i8') >>> print(a) int64
>>> import numpy as np ')16[('number', '<i >>> print(a) >>> arr = np.array([(2']) ,)1]), dtype = a)2]), dtype = a)3([ >>> print(arr) ([1,)2,)3,) >>> print(arr['number']) # Le nom de champ de type peut être utilisé pour accéder à la colonne number réelle [1 2 3]
Les exemples suivants définissent un type de données structurées animal, contenant un champ de chaîne name, un champ de type entier age, et un champ de type flottant marks, et appliquent ce dtype à l'objet ndarray.
>>> import numpy as np >>> animal = np.dtype([('name','S20"1'), ('marks', 'f4'' >>> print(animal) '), ('age', 'i20"1'), ('marks', '" <f4']) >>> a = np.array([('cat', 5, 10),(b'dog', 4, 35),(b'lion',8,18]), dtype = animal >>> print(a) [(b'cat', 5, 10).(b'dog', 4, 35).(b'lion', 8, 18])
L'utilisation de la méthode astype permet de convertir explicitement le type de données d'un tableau, voici un exemple :
>>> import numpy as np >>> arr = np.array([1,2,3,4,5]) >>> print(arr.dtype) int64 >>> print(arr) [1 2 3 4 5] >>> float_arr = arr.astype('float32') # Aussi écrit arr.astype(np.float32) >>> print(float_arr.dtype) float32 >>> print(float_arr) [1. 2. 3. 4. 5.]
还可以用其他数组的 dtype 来转换数据类型,具体实例如下:
>>> import numpy as np >>> int_arr = np.arange(10) >>> calibers = np.array([.22, .270, .357], dtype=np.float64) >>> print(calibers) [0.22 0.27 0.357] >>> arr_last = int_arr.astype(calibers.dtype) >>> print(arr_last.dtype) float64 >>> print(arr_last) [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
每个内建类型都有一个唯一定义它的字符代码,如下:
字符 | 对应类型 |
b | 布尔型 |
i | (有符号) 整型 |
u | 无符号整型 integer |
f | 浮点型 |
c | 复数浮点型 |
m | timedelta(时间间隔) |
M | datetime(日期时间) |
O | (Python) 对象 |
S, a | (byte-) 字符串 |
U | Unicode |
V | 原始数据 (void) |