NumPy 结构化数组

2021-09-01 10:27 更新

介绍

结构化数组是 ndarrays,其数据类型是组织为命名字段序列的更简单数据类型的组合。例如,

>>> 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. 长度为 10 或更少的名为“name”的字符串,2. 名为“age”的 32 位整数,以及 3. a 32 -位浮点数名为“重量”。

如果x在位置 1 处建立索引,则会得到一个结构:

>>> x[1]
('Fido', 3, 27.0)

您可以通过使用字段名称进行索引来访问和修改结构化数组的各个字段:

>>> 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 结构的内存布局会导致缓存行为不佳。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号