2017-06-01 152 views
1

如何有效编写Python字典,其中的值是Numpy Nd-Arrays到Json文件? 我得到一个错误,说Numpy Nd-Array不是Json-Serializable。有什么办法可以解决这个问题吗?使用Numpy Nd-Array值将Python字典写入Json文件的有效方法

+0

您是否尝试将Numpy数组转换为(可能嵌套的)列表? –

+0

是的,可以将Numpy数组转换为列表,然后工作。我的问题更倾向于其他方向:是否有更快捷的方法来实现这一目的,而没有将所有的转换和复制到列表中? – AlexGuevara

回答

1

JSON仅支持有限数量的数据类型。如果您想将其他类型的数据存储为JSON,那么您需要将其转换为JSON接受的内容。 Numpy数组的明显选择是将它们存储为(可能是嵌套的)列表。幸运的是,Numpy数组有一个.tolist方法可以高效地执行转换。

import numpy as np 
import json 

a = np.array(range(25), dtype=np.uint8).reshape(5, 5) 
print(a) 
print(json.dumps(a.tolist())) 

输出

[[ 0 1 2 3 4] 
[ 5 6 7 8 9] 
[10 11 12 13 14] 
[15 16 17 18 19] 
[20 21 22 23 24]] 
[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19], [20, 21, 22, 23, 24]] 

.tolist将数组元素天然Python类型(整数或浮点数)转换,如果它可以这样做无损。如果您使用其他数据类型,我建议您在致电.tolist之前将它们转换为可移植的东西。