NumPy - Tipos de datos

NumPy admite una variedad mucho mayor de tipos numéricos que Python. La siguiente tabla muestra diferentes tipos de datos escalares definidos en NumPy.

No Señor. Tipos de datos y descripción
1

bool_

Booleano (verdadero o falso) almacenado como un byte

2

int_

Tipo de entero predeterminado (igual que C long; normalmente int64 o int32)

3

intc

Idéntico a C int (normalmente int32 o int64)

4

intp

Número entero utilizado para la indexación (igual que C ssize_t; normalmente int32 o int64)

5

int8

Byte (de -128 a 127)

6

int16

Entero (-32768 a 32767)

7

int32

Entero (-2147483648 a 2147483647)

8

int64

Entero (-9223372036854775808 a 9223372036854775807)

9

uint8

Entero sin signo (0 a 255)

10

uint16

Entero sin signo (0 a 65535)

11

uint32

Entero sin signo (0 a 4294967295)

12

uint64

Entero sin signo (0 a 18446744073709551615)

13

float_

Taquigrafía de float64

14

float16

Flotante de media precisión: bit de signo, exponente de 5 bits, mantisa de 10 bits

15

float32

Flotador de precisión simple: bit de signo, exponente de 8 bits, mantisa de 23 bits

dieciséis

float64

Flotante de doble precisión: bit de signo, exponente de 11 bits, mantisa de 52 bits

17

complex_

Taquigrafía para complex128

18

complex64

Número complejo, representado por dos flotantes de 32 bits (componentes reales e imaginarios)

19

complex128

Número complejo, representado por dos flotantes de 64 bits (componentes reales e imaginarios)

Los tipos numéricos NumPy son instancias de objetos dtype (tipo de datos), cada uno con características únicas. Los dtypes están disponibles como np.bool_, np.float32, etc.

Objetos de tipo de datos (dtype)

Un objeto de tipo de datos describe la interpretación de un bloque fijo de memoria correspondiente a una matriz, según los siguientes aspectos:

  • Tipo de datos (entero, flotante o objeto Python)

  • Tamaño de los datos

  • Orden de bytes (little-endian o big-endian)

  • En el caso del tipo estructurado, los nombres de los campos, el tipo de datos de cada campo y parte del bloque de memoria que ocupa cada campo.

  • Si el tipo de datos es un subarreglo, su forma y tipo de datos

El orden de los bytes se decide anteponiendo '<' o '>' al tipo de datos. '<' significa que la codificación es little-endian (la menos significativa se almacena en la dirección más pequeña). '>' significa que la codificación es big-endian (el byte más significativo se almacena en la dirección más pequeña).

Un objeto dtype se construye utilizando la siguiente sintaxis:

numpy.dtype(object, align, copy)

Los parámetros son:

  • Object - Para convertir a objeto de tipo de datos

  • Align - Si es verdadero, agrega relleno al campo para hacerlo similar a C-struct

  • Copy- Hace una nueva copia del objeto dtype. Si es falso, el resultado es una referencia al objeto de tipo de datos incorporado

Ejemplo 1

# using array-scalar type 
import numpy as np 
dt = np.dtype(np.int32) 
print dt

La salida es la siguiente:

int32

Ejemplo 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

La salida es la siguiente:

int32

Ejemplo 3

# using endian notation 
import numpy as np 
dt = np.dtype('>i4') 
print dt

La salida es la siguiente:

>i4

Los siguientes ejemplos muestran el uso del tipo de datos estructurados. Aquí, se declarará el nombre del campo y el tipo de datos escalares correspondiente.

Ejemplo 4

# first create structured data type 
import numpy as np 
dt = np.dtype([('age',np.int8)]) 
print dt

La salida es la siguiente:

[('age', 'i1')]

Ejemplo 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

La salida es la siguiente:

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

Ejemplo 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']

La salida es la siguiente:

[10 20 30]

Ejemplo 7

Los siguientes ejemplos definen un tipo de datos estructurado llamado student con un campo de cadena 'nombre', un integer field 'edad' y una float field'marcas'. Este dtype se aplica al objeto ndarray.

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

La salida es la siguiente:

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

Ejemplo 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

La salida es la siguiente:

[('abc', 21, 50.0), ('xyz', 18, 75.0)]

Cada tipo de datos incorporado tiene un código de carácter que lo identifica de forma única.

  • 'b' - booleano

  • 'i' - entero (con signo)

  • 'u' - entero sin signo

  • 'f' - punto flotante

  • 'c' - punto flotante complejo

  • 'm' - timedelta

  • 'M' - fecha y hora

  • 'O' - (Python) objetos

  • 'S', 'a' - (byte-) cadena

  • 'U' - Unicode

  • 'V' - datos brutos (nulos)