每个 ndarray 都有一个关联的数据类型 (dtype) 对象。这个数据类型对象(dtype)告诉我们数组的布局。这意味着它为我们提供了以下信息:
数据类型(整数、浮点数、Python 对象等)数据大小(字节数)数据的字节顺序(小端或大端)如果数据类型是子数组,它的形状和数据类型是什么。ndarray 的值存储在缓冲区中,可以将其视为连续的内存字节块。所以这些字节将如何被解释由dtype对象给出。
(资料图片仅供参考)
构造数据类型(dtype)对象
数据类型对象是 numpy.dtype 类的一个实例,可以使用numpy.dtype
.
参数:
obj:要转换为数据类型对象的对象。
align: [bool, optional] 向字段添加填充以匹配 C 编译器为类似 C 结构输出的内容。
copy: [bool, optional] 制作数据类型对象的新副本。如果为 False,则结果可能只是对内置数据类型对象的引用。
# Python 程序创建数据类型对象 import numpy as np # np.int16 被转换为数据类型对象。 print(np.dtype(np.int16))
输出:
int16
# Python 程序创建一个包含 32 位大端整数的数据类型对象 import numpy as np # i4 表示大小为 4 字节的整数 # > 表示大端字节序和 # < 表示小端编码。 # dt 是一个 dtype 对象 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 程序。 import numpy as np a = np.array([1]) print("type is: ",type(a)) print("dtype is: ",a.dtype)
输出:
type is:
dtype is: int32
具有结构化数组的数据类型对象
数据类型对象对于创建结构化数组很有用。结构化数组是包含不同类型数据的数组。可以借助字段访问结构化数组。
字段就像为对象指定名称。在结构化数组的情况下,dtype 对象也将是结构化的。
# 用于演示字段使用的 Python 程序 import numpy as np # 一种结构化数据类型,包含一个 16 字符的字符串(在“name”字段中)和两个 64 位浮点数的子数组(在“grades”字段中) dt = np.dtype([("name", np.unicode_, 16), ("grades", np.float64, (2,))]) # 具有字段等级的对象的数据类型 print(dt["grades"]) # 具有字段名称的对象的数据类型 print(dt["name"])
输出:
("
# Python 程序演示了数据类型对象与结构化数组的使用。 import numpy as np dt = np.dtype([("name", np.unicode_, 16), ("grades", np.float64, (2,))]) # x 是一个包含学生姓名和分数的结构化数组。 # 学生姓名的数据类型是np.unicode_,分数的数据类型是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 NumPy教程之数据类型对象详解的文章就介绍到这了,更多相关Python NumPy数据类型对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 2亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 3现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 4如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 5AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 6转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 7充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 8好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 9名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 10亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战