Objeto de tipo de datos (dtype) en NumPy Python

Cada ndarray tiene un objeto de tipo de datos asociado (dtype). Este objeto de tipo de datos (dtype) nos informa sobre el diseño de la array. Esto significa que nos da información sobre: 

  • Tipo de datos (entero, flotante, objeto de Python, etc.)
  • Tamaño de los datos (número de bytes)
  • El orden de bytes de los datos (little-endian o big-endian)
  • Si el tipo de datos es un subarreglo, ¿cuál es su forma y tipo de datos?

Los valores de un ndarray se almacenan en un búfer que se puede considerar como un bloque contiguo de bytes de memoria. Entonces, cómo se interpretarán estos bytes está dado por el objeto dtype.  

1. Construcción de un objeto de tipo de datos (dtype): un objeto de tipo de datos es una instancia de la clase NumPy.dtype y se puede crear usando NumPy.dtype.

Parámetros: 

  • obj: Objeto que se convertirá en un objeto de tipo de datos.
  • align : bool, opcional 
    Agregue relleno a los campos para que coincida con lo que generaría un compilador de C para una estructura C similar.
  • copy : bool, opcional 
    Realiza una nueva copia del objeto de tipo de datos. Si es False, el resultado puede ser solo una referencia a un objeto de tipo de datos incorporado.

Python

# Python Program to create a data type object
import numpy as np
 
# np.int16 is converted into a data type object.
print(np.dtype(np.int16))

Producción:

int16

Python

# Python Program to create a data type object
# containing a 32 bit big-endian integer
import numpy as np
 
# i4 represents integer of size 4 byte
# > represents big-endian byte ordering and < represents little-endian encoding.
# dt is a dtype object
dt = np.dtype('>i4')
 
print("Byte order is:",dt.byteorder)
 
print("Size is:",dt.itemsize)
 
print("Data type is:",dt.name)

Producción:

Byte order is: >
Size is: 4
Name of data type is: int32

la

  • b1, i1, i2, i4, i8, u1, u2, u4, u8, f2, f4, f8, c8, c16, a 
       (que representan bytes, enteros, enteros sin signo, flotantes, 
        strings complejas y de longitud fija de longitudes de bytes especificadas )
  • int8,…,uint8,…,float16, float32, float64, complex64, complex128 
       (esta vez con tamaños de bits )

Nota:

dtype is different from type. 

Python

# Python program to differentiate
# between type and dtype.
import numpy as np
 
a = np.array([1])
 
print("type is: ",type(a))
print("dtype is: ",a.dtype)

Producción:

type is:    
dtype is:  int32

2. Objetos de tipo de datos con arrays estructuradas: los objetos de tipo de datos son útiles para crear arrays estructuradas. Una array estructurada es aquella que contiene diferentes tipos de datos. Se puede acceder a las arrays estructuradas con la ayuda de los campos. 
Un campo es como especificar un nombre para el objeto. En el caso de arrays estructuradas, el objeto dtype también estará estructurado.  

Python

# Python program for demonstrating
# the use of fields
import numpy as np
 
# A structured data type containing a 16-character string (in field ‘name’) 
# and a sub-array of two 64-bit floating-point number (in field ‘grades’):
 
dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
 
# Data type of object with field grades
print(dt['grades'])
 
# Data type of object with field name 
print(dt['name'])

Producción: 

('<f8', (2,))

Python

# Python program to demonstrate 
# the use of data type object with structured array.
import numpy as np
 
dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
 
# x is a structured array with names and marks of students.
# Data type of name of the student is np.unicode_ and 
# data type of marks is np.float(64)
x = np.array([('Sarah', (8.0, 7.0)), ('John', (6.0, 7.0))], dtype=dt)
 
print(x[1])
print("Grades of John are: ",x[1]['grades'])
print("Names are: ",x['name'])

Producción:

('John', [ 6.,  7.])
Grades of John are:  [ 6.  7.]
Names are:  ['Sarah' 'John']

Referencias :  

Este artículo es una contribución de Ayushi Asthana . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *