我有一个字典,里面有元组键和numpy数组值。我试着用h5和pickle保存它,但是收到了错误消息。将此对象保存到文件的最佳方法是什么?在
import numpy as np
from collections import defaultdict
Q =defaultdict(lambda: np.zeros(2))
Q[(1,2,False)] = np.array([1,2])
Q[(1,3,True)] = np.array([3,4])
>>> Q
defaultdict(<function <lambda> at 0x10c51ce18>, {(1, 2, False): array([1, 2]), (1, 3, True): array([3, 4])})
在np.保存回溯:
^{pr2}$
我看不出使用
pickle
有任何问题编辑后:
您实际拥有的是一个
lambda
,并且在默认情况下不能进行pickle。您需要安装dill
并导入它才能正常工作(请参见this answer)它应该是这样的:
^{pr2}$输出:
OP的解决方案: 您编辑的解决方案仍然为我生成了相同的错误,但这很好:
在我的机器上(win8.1 64位,使用Spyder),我在使用simple
dill
时没有错误。把它存为普通字典怎么样?保存期间不需要
defaultdict
行为。在我们可以将其从
^{pr2}$defaultdict
包装中拉出:然后我们可以对它进行pickle(我使用
np.save
作为pickle快捷方式)load
给出一个包含此字典的对象数组:我们可以通过更新轻松地重新创建defaultdict:
相关问题 更多 >
编程相关推荐