Python Numpy定义结构化数组dtype时报ValueError错误如何解决
问题原因
你代码的核心问题是结构化数组dtype定义的字典键名写错了。NumPy要求定义结构化数据类型时,存放字段名的字典固定键为names,你误写为了OrderDates,导致NumPy无法识别结构化类型的定义规则,抛出格式校验错误。
修正方案
- 将dtype字典里的
OrderDates键改为names即可 - 额外说明:你当前定义的数组长度为3,但你的4组源数据都包含4个元素,如果后续要往数组里赋值,建议将
np.zeros(3)修改为np.zeros(4),仅打印dtype的话数组长度不影响输出结果。
修正后代码
import numpy as np OrderDate = ['05-11-1996', '01-01-1971', '03-15-1969', '08-09-1983'] OrderAmount = [25.9, 44.8, 36.1, 29.4] OrderNumber = [25, 45, 37, 19] OrderName=['Ronaldo','Messi','Dybala','Pogba'] # 修正dtype的键名为names data = np.zeros(3, dtype={'names':('OrderDate','OrderAmount', 'OrderNumber','OrderName'), 'formats':('U10','f8','i4','U10')}) print(data.dtype)
输出结果
运行后可得到你预期的输出:
[('OrderDate', '<U10'), ('OrderAmount', '<f8'), ('OrderNumber', '<i4'), ('OrderName', '<U10')]
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

