我正在寻找一种方法来将包含numpy数组的嵌套字典转换为JSON文件(以将我的实验和数据的完整日志保存在一个位置)。将嵌套字典中的numpy数组转换为列表,同时保留字典结构
我的字典里是这样的(该结构可以是多个嵌套比显示代码):
import numpy as np
data = {'foo': {'bar': np.array([1, 2, 3])}, 'goo': np.array([3,5,7]),'fur': {'dur': {'mur': np.array([7,5,8])}}}
在此代码失败的时刻,因为numpy的阵列是不可序列:
with open('data.txt','w') as fl:
json.dump(data,fl)
我知道可以使用tolist()函数,但我不知道如何遍历字典,同时保留数据结构并交换np.arrays列表。
我尝试使用递归从字典中获取单个值,但我不知道如何“生成字典”。我此刻的代码(不JSON转储):
import numpy as np
def dict_walk(data):
for k, v in data.iteritems():
if isinstance(v, dict):
dict_walk(v)
else:
l = v.tolist()
print l
data = {'foo': {'bar': np.array([1, 2, 3])}, 'goo': np.array([3,5,7]),'fur': {'dur': {'mur': np.array([7,5,8])}}}
dict_walk(data)
您可能还想考虑使用[pickle](http://docs.python.org/2/library/pickle。 html),它可以让你直接保存一个Python对象。 (当然,这个问题还是值得的,只是想指出另一种方法,以防你没听说过)。 – ASGM 2013-04-08 10:16:32
@ASGM感谢您的建议!我使用JSON来兼容第三方软件,所以我决定不要泡菜。 – Matt 2013-04-08 10:24:55