如何将带numpy数组的dictionary转换为json并返回



我正在学习python开发,我是python世界的新手,下面是我的字典,值为NumPy数组,我想将其转换为JSON,并将其从JSON转换回具有NumPy阵列的字典。事实上,我正试图使用json.dumps((转换它,但它给了我一个错误,说:ndarray类型的对象不是json可序列化的

{
'chicken': array([5. , 4. , 3. , 2. , 1. , 0.5, 0. ]),
'banana': array([4. , 3. , 2. , 1. , 0.5, 0. ]),
'carrots': array([5. , 4. , 3. , 2. , 1. , 0.5, 0. ]),
'turkey': array([5. , 4. , 3. , 2. , 1. , 0.5, 0. ]),
'rice': array([3. , 2. , 1. , 0.5, 0. ]),
'whey': array([5. , 4. , 3. , 2. , 1. , 0.5, 0. ]),
'peanut': array([5. , 4. , 3. , 2. , 1. , 0.5, 0. ]),
'Yellow Cake (with Vanilla Frosting)': array([5. , 4. , 3. , 2. , 1. , 0.5, 0. ])
}

我这样做是因为我想将数据从一个AWS Lambda函数传递到另一个AWS Lambda函数。任何帮助都将不胜感激,谢谢。

numpy数组不能直接转换为json;而是使用列表。

# Test data
d = {
'chicken': np.random.randn(5),
'banana': np.random.randn(5),
'carrots': np.random.randn(5)
}
# To json
j = json.dumps({k: v.tolist() for k, v in d.items()})
# Back to dict
a = {k: np.array(v) for k, v in json.loads(j).items()}
print (a)
print (d)

输出:

{'banana': array([-0.9936452 ,  0.21594978, -0.24991611,  0.99210387, -0.22347124]),
'carrots': array([-0.7981783 , -1.47840335, -0.00831611,  0.58928124, -0.33779016]),
'chicken': array([-0.03591249, -0.75118824,  0.58297762,  0.5260574 ,  0.6391851 ])}
{'banana': array([-0.9936452 ,  0.21594978, -0.24991611,  0.99210387, -0.22347124]),
'carrots': array([-0.7981783 , -1.47840335, -0.00831611,  0.58928124, -0.33779016]),
'chicken': array([-0.03591249, -0.75118824,  0.58297762,  0.5260574 ,  0.6391851 ])}

请查看此处发布的解决方案:https://stackoverflow.com/a/70884973/4271392

它使用轻量级python模块jdata对numpy数组进行编码和保存二进制信息,并将json转换回numpy。

最新更新