每个ndarray都有一个关联的数据类型(dtype)对象。此数据类型对象(dtype)通知我们有关数组的布局。这意味着它为我们提供了有关以下信息:
- 数据类型(整数, 浮点数, Python对象等)
- 数据大小(字节数)
- 数据的字节顺序(小端或大端)
- 如果数据类型是子数组, 则其形状和数据类型是什么。
【NumPy Python中的数据类型对象(dtype)】构造一个数据类型(dtype)对象:
数据类型对象是numpy.dtype类的实例, 可以使用numpy.dtype创建它。
参数:
- obj:要转换为数据类型对象的对象。
- 对齐:bool, 可选
在字段中添加填充以匹配C编译器将为类似的C结构输出的内容。 - 复制: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: 4Name 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 is different from type.
# Python program to differentiate
# between type and dtype.
import numpy as npa = np.array([ 1 ])print ( "type is: " , type (a))
print ( "dtype is: " , a.dtype)
输出如下:
type is:
dtype is:
int32
具有结构化数组的数据类型对象:
数据类型对象对于创建结构化数组很有用。结构化数组是包含不同类型数据的数组。可以借助字段来访问结构化数组。
字段就像为对象指定名称。在结构化数组的情况下, 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 npdt = 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']
参考文献:
- docs.scipy.org
- 结构化数组
注意怪胎!巩固你的基础Python编程基础课程和学习基础知识。
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。
推荐阅读
- C++中的数据类型范围及其宏详细指南
- Python中的进度条如何实现和使用()
- 数组范围查询频率与值相同的元素
- 算法设计(如何计算全为1的最大矩形二进制子矩阵())
- 浏览器PHP错误(如何显示PHP错误())
- Java如何实现带有CRUD操作的文件处理()
- Android7.0 PowerManagerService WakeLock的使用及流程
- Android最佳实践——深入浅出WebSocket协议
- Android JobService的使用及源码分析