Python字典转np.array后按键取值报IndexError的解决方法
问题原因
你直接把字典传入np.array()时,生成的是0维numpy数组,数组内部存储的是完整的字典对象,不是支持按键索引的numpy结构化数组,因此直接用test['a']索引不符合普通numpy数组的索引规则,会抛出你遇到的IndexError。
解决方案
方案1:不修改创建逻辑,直接取值
如果你不想调整数组创建代码,先提取出numpy数组里存储的字典对象,再按键取值即可:
# 取出0维数组内的字典元素,再取键对应的值 test.item()['a']
运行后即可得到目标值1。
方案2:创建支持按键索引的结构化数组
如果需要直接通过test['a']的形式取值,创建数组时指定对应字段的dtype即可:
# 创建字段名为a的numpy结构化数组 test = np.array((1,), dtype=[('a', int)]) # 直接按键取值 test['a']
运行后同样可以得到目标值1。
内容的提问来源于stack exchange,提问作者이승훈
相关产品推荐
相关产品推荐

