如何在numpy结构化数组中设置多种数据类型
问题原因
你使用的dtype声明格式不符合numpy结构化数组的类型规范:直接传入('<U10', np.dtype('i'))时,numpy会将该元组解析为「基类型+单元素形状」的组合,而非两个字段的复合类型,因此触发数据描述符大小不匹配的报错。
正确设置方式
分两种常用场景:
- 场景1:需要为字段命名(推荐,后续取值更便捷)
将dtype设置为包含「字段名+对应类型」元组的列表即可,示例代码如下:
import numpy as np arr = np.array( [('2021-08-29', 125), ('2021-09-12', 75), ('2021-09-19', 75), ('2021-11-07', 75), ('2021-12-31', 125)], dtype=[('date', '<U10'), ('value', 'i')] )
后续可通过arr['date']直接提取所有日期字段,arr['value']提取所有数值字段。
- 场景2:不需要字段名,仅按位置指定类型
可以直接传入逗号分隔的类型字符串作为dtype,示例代码如下:
import numpy as np arr = np.array( [('2021-08-29', 125), ('2021-09-12', 75), ('2021-09-19', 75), ('2021-11-07', 75), ('2021-12-31', 125)], dtype='<U10, i' )
该写法下numpy会为字段自动分配默认名称f0、f1,可通过下标或默认字段名取值。
内容的提问来源于stack exchange,提问作者mmz
相关产品推荐
相关产品推荐

