Python NumPy数据类型对象(dtype)

Python NumPy数据类型对象(dtype)

每个ndarray都有一个相关的数据类型(dtype)对象。这个数据类型对象(dtype)告诉我们数组的布局。这意味着它为我们提供了以下信息:

  • 数据类型(整数、浮点数、Python对象等)
  • 数据的大小(字节数)
  • 数据的字节顺序(小端序或大端序)
  • 如果数据类型是子数组,那么它的形状和数据类型是什么?

ndarray的值存储在一个缓冲区中,这个缓冲区可以被认为是一个连续的内存字节块。如何解释这些字节是由dtype对象给出的。

1.构造一个数据类型(dtype)对象:数据类型对象是NumPy的实例。dtype类,它可以使用NumPy.dtype创建。

参数:

  • obj:对象要转换为数据类型对象。
  • align:bool,可选
    为字段添加填充,以匹配C编译器为类似的C结构输出的内容。
  • copy:bool,可选
    创建数据类型对象的新副本。如果为False,则结果可能只是对内置数据类型对象的引用。
# 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))

输出:

int16
# 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)

输出:

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

类型说明符(在上面的例子中是i4)可以采用不同的形式:

  • b1, i1, i2, i4, i8, u1, u2, u4, u8, f2, f4, f8, c8, c16, a (代表字节、整数、无符号整数、浮点数、复数和指定字节的固定长度字符串。指定字节长度的固定长度的字符串)
  • int8,…,uint8,…,float16, float32, float64, complex64, complex128 (这次是有位数的)

注意:dtype与type不同。

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

输出:

type is:    
dtype is:  int32

2.数据类型结构化数组对象:数据类型对象对于创建结构化arrays非常有用。结构化数组是包含不同类型数据的数组。结构化arrays可以在字段的帮助下访问。字段类似于指定对象的名称。对于结构化arrays,dtype对象也将是结构化的。

# 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'])

输出:

('<f8', (2,))
# 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'])

输出:

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程