说明
NumPy 教程 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
结构化数组(Structured arrays )也是一个 ndarray,其数据类型是由一系列更简单的数据类型组成的命名字段。在结构化数据类型中,每个子类型称为字段。 该字段具有名称(字符串)、类型(任何有效的 dtype)和可选标题。
例如以下是一个结构化数组:
x = np.array([('Rex', 9, 81.0), ('Fido', 3, 27.0)],
dtype=[('name', 'U10'),
('age', 'i4'),
('weight', 'f4')
]
)
x
'''
array([('Rex', 9, 81.), ('Fido', 3, 27.)],
dtype=[('name', '<U10'), ('age', '<i4'), ('weight', '<f4')])
'''
这里 x 是长度为 2 的一维数组,其数据类型是具有三个字段的结构:
如果你在位置 1 索引 x 你会得到一个结构:
x[1]
# ('Fido', 3, 27.)
您可以通过使用字段名称,进行索引来访问和修改结构化数组的各个字段:
x['age']
# array([9, 3], dtype=int32)
x['age'] = 5
x
'''
array([('Rex', 5, 81.), ('Fido', 5, 27.)],
dtype=[('name', '<U10'), ('age', '<i4'), ('weight', '<f4')])
'''
结构化数据类型旨在模仿 C 语言中的“结构”,并共享类似的内存布局。它们用于与 C 代码接口和结构化缓冲区的低级操作,例如用于解释二进制 blob。 出于这些目的,它们支持子数组、嵌套数据类型和联合等特殊功能,并允许控制结构的内存布局。
希望操作表格数据(例如存储在 csv 文件中)的用户可能会发现其他更适合的 pydata 项目,例如 xarray、pandas 或 DataArray。 这些为表格数据分析提供了高级界面,并针对该用途进行了更好的优化。 例如,相比之下,numpy 中结构化数组的类似 C 结构的内存布局会导致缓存行为不佳。
更新时间:June 29, 2022, 2:30 p.m. 标签:numpy python 数组 结构化