发生的事情是我(错误地)使用命令numpy.save()
保存了一个字典(没有显示错误消息),现在我需要恢复字典中的数据。当我用numpy.load()
加载它时它有类型(numpy.ndarray
)并且是0-d,所以它不再是字典而且我无法访问其中的数据,0-d数组是不能索引,所以做
mydict = numpy.load('mydict')
mydict[0]['some_key']
不起作用。我也试过
recdict = dict(mydict)
但这也不起作用。
当我用numpy.save()
保存字典时,为什么numpy没有警告我?
有没有办法恢复数据?
提前致谢!
答案 0 :(得分:67)
使用mydict.item()
将数组元素作为Python标量获取。
>>> import numpy as np
>>> np.save('/tmp/data.npy',{'a':'Hi Mom!'})
>>> x=np.load('/tmp/data.npy')
>>> x.item()
{'a': 'Hi Mom!'}
答案 1 :(得分:23)
可以使用空元组索引0-d数组:
>>> import numpy as np
>>> x = np.array({'x': 1})
>>> x
array({'x': 1}, dtype=object)
>>> x[()]
{'x': 1}
>>> type(x[()])
<type 'dict'>
答案 2 :(得分:0)
这是一种使用 dict type
和 'allow_pickle=True'
恢复 '.tolist()'
数据的方法。
希望能帮到你。
numpy.save('mydict.npy', org_dict)
#
mydict = numpy.load('mydict.npy', allow_pickle=True)
# convert type to dict from numpy.ndarray. _
recdict = mydict.tolist()
print('recdict :', type(recdict), recdict) # 'recdict' is '<type dict>'