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 代碼接口和結構化緩沖區(qū)的低級操作,例如用于解釋二進制 blob。出于這些目的,它們支持特殊功能,例如子數組、嵌套數據類型和聯合,并允許控制結構的內存布局。 希望操作表格數據(例如存儲在 csv 文件中)的用戶可能會發(fā)現其他 pydata 項目更合適,例如 xarray、pandas 或 DataArray。這些為表格數據分析提供了高級界面,并且針對該用途進行了更好的優(yōu)化。例如,相比之下,numpy 中結構化數組的類似 C 結構的內存布局會導致緩存行為不佳。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號