English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Descripción y ejemplo de tipo de datos NumPy
El tipo de datos, o dtype, también es un objeto especial que contiene la información de los bloques de memoria que ndarray necesita declarar para un tipo de datos específico (también se conoce como metadatos, es decir, datos que representan datos) dtype es la razón por la que NumPy puede interactuar de manera flexible con otros sistemas. Por lo general, otros sistemas proporcionan una relación entre un disco duro o memoria y los datos, lo que hace que sea muy conveniente escribir y leer datos en lenguaje de bajo nivel como C o Fortran.
Los tipos de datos que admite numpy son más de Tipos de datos integrados de Pythonson muchos más, básicamente pueden corresponder a los tipos de datos del lenguaje C, entre los cuales algunos tipos corresponden a tipos integrados de Python. La tabla a continuación enumera los tipos básicos más comunes de NumPy.
Nombre | Descripción |
int_ | Tipo de entero predeterminado (similar a long en el lenguaje C, int32 o int64) |
int8 | Bytes (-128 a 127) |
int16 | Enteros (-32768 a 32767) |
int32 | Enteros (-2147483648 a 2147483647) |
int64 | Enteros (-9223372036854775808 a 9223372036854775807) |
intc | Igual al tipo int de C, generalmente int32 o int 64 |
intp | Tipo de entero utilizado para índices (similar a ssize_t en C, generalmente int32 o int64) |
uint8 | Enteros sin signo (0 a 255) |
uint16 | Enteros sin signo (0 a 65535) |
uint32 | Enteros sin signo (0 a 4294967295) |
uint64 | Enteros sin signo (0 a 18446744073709551615) |
float_ | float64 Abreviatura del tipo |
float16 | Flotante de precisión media, incluyendo:1 posiciones de signo5 posiciones de exponente10 posiciones decimales |
float32 | Flotante de precisión simple, incluyendo:1 posiciones de signo8 posiciones de exponente23 posiciones decimales |
float64 | Flotante de doble precisión, incluyendo:1 posiciones de signo11 posiciones de exponente52 posiciones decimales |
complex_ | complex128 Abreviatura del tipo, es decir 128 Números complejos de bits |
complex64 | Números complejos, representando el doble 32 Números flotantes de bits (parte real y parte imaginaria) |
complex128 | Números complejos, representando el doble 64 Números flotantes de bits (parte real y parte imaginaria) |
bool_ | Tipo de datos booleano (True o False) |
No es necesario recordar todos estos dtype de NumPy, especialmente para principiantes. Generalmente, solo se necesita saber el tipo general de los datos que se están procesando, ya sea flotante, complejo, entero, booleano, cadena o objeto Python. Cuando se necesita controlar el modo de almacenamiento de los datos en la memoria y el disco (especialmente para conjuntos de datos grandes), se debe entender cómo controlar el tipo de almacenamiento.
Los tipos de datos numéricos de numpy son instancias del objeto dtype y corresponden a caracteres únicos, incluyendo np.bool_, np.int32np.float32etcétera.
El objeto de tipo de datos se utiliza para describir cómo se utiliza el área de memoria correspondiente al array, lo que depende de varios aspectos:
El tipo de datos - Por ejemplo, números flotantes, números complejos, enteros, valores booleanos, cadenas o objetos Python.El tamaño de los datos - Por ejemplo, cuántos bytes utiliza un entero.El orden de bytes de los datos - Little-endian o big-endian
El orden de bytes se determina mediante la predefinición de "<" o ">" para el tipo de datos. "<" significa método de little-endian (el valor más pequeño se almacena en la dirección más pequeña, es decir, los grupos más bajos se colocan al principio). ">" significa método de big-endian (los bytes más importantes se almacenan en la dirección más pequeña, es decir, los grupos más altos se colocan al principio).
El objeto dtype se construye utilizando la siguiente sintaxis:
numpy.dtype(object, align, copy)
object - El objeto de tipo de datos a convertiralign - Si es true, rellena los campos para que sean similares a los estructuras de C.copy - Copiar el objeto dtype, si es false, es una referencia al objeto de tipo de datos integrado
A continuación, podemos entenderlo a través de un ejemplo.
>>> import numpy as np >>> a = np.dtype(np.float32) >>> print(a) float32
# int8, int16, int32, int64 Cuatro tipos de datos se pueden usar como cadenas 'i1', 'i2','i4','i8'' en lugar de >>> import numpy as np >>> a = np.dtype('i8')] >>> print(a) int64
El siguiente ejemplo muestra el uso del tipo de datos estructurado, se crean los campos de tipo y los tipos reales correspondientes.
>>> import numpy as np >>> a = np.dtype([('number', np.int16)] # El tipo de datos se aplica a un objeto ndarray >>> print(a) [('number', '<i2']) >>> arr = np.array([(1([2([3([ >>> print(arr) ,)1,)2,)3>>> print(arr['number']) # El nombre del campo de tipo se puede usar para acceder a la columna real number El siguiente ejemplo define un tipo de datos estructurado animal, que contiene el campo de cadena name, el campo de entero age y el campo de flotante marks, y aplica este dtype a un objeto ndarray. [1 2 3]
>>> animal = np.dtype([('name','S
>>> import numpy as np 21'), ('marks', '4'')) >>> print(animal) 21'), ('marks', ' <f4']) >>> a = np.array([('cat', 5, 10)), ('dog', 4, 35)), ('lion',8,18]), dtype = animal >>> print(a) [(b'cat', 5, 10). (b'dog', 4, 35). (b'lion', 8, 18])
El método astype puede convertir explícitamente el tipo de datos de un array, ejemplo específico a continuación:
>>> 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') # también se puede escribir arr.astype(np.float32) >>> print(float_arr.dtype) float32 >>> print(float_arr) [1. 2. 3. 4. 5.]
También se puede convertir el tipo de datos de otro array dtype, como se muestra en el siguiente ejemplo:
>>> 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.]
Cada tipo integrado tiene un código de carácter único que lo define, como se muestra a continuación:
Carácter | Tipo correspondiente |
b | Booleano |
i | Entero (con signo) |
u | Entero sin signo integer |
f | Flotante |
c | Flotante complejo |
m | timedelta (intervalo de tiempo) |
M | datetime (fecha y hora) |
O | (Objeto) Python |
S, a | (byte-)Cadena |
U | Unicode |
V | Datos originales (void) |