【发布时间】:2018-06-26 20:42:30
【问题描述】:
我有一个程序以 NumPy 数组的形式处理数据,它需要以 JSON 形式存储(稍后将其传递给另一个程序以可视化数据)。当我尝试以下操作时:
my_array = np.array([3, 4, 5])
json.dumps(my_array)
我收到一条错误消息阅读
TypeError: array([3, 4, 5]) is not JSON serializable
所以事实证明数组是不可序列化的。我希望通过将数组转换为普通列表来解决这个问题,但如果我尝试
my_array = np.array([3, 4, 5])
my_list = list(my_array)
json.dumps(my_list)
我只是读错了
TypeError: 3 is not JSON serializable
(3 似乎是因为 '3' 是列表的第一个元素)
更奇怪的是,当我尝试从头开始重建列表时,此错误仍然存在:
def plain_list(ls):
pl = []
for element in ls:
pl.append(element)
return pl
my_array = np.array([3, 4, 5])
my_list = plain_list(my_array)
json.dumps(my_list)
仍然返回
TypeError: 3 is not JSON serializable
我有两个问题:
- 怎么连最后一个都不起作用?它不应该“忘记”曾经是 NumPy 数组的一切吗? NumPy 数组中的整数是否真的与普通整数不是相同的对象,它们是否带有一些特殊的不可见属性,即使在数组之外也仍然存在?
- 如何我如何有效地以 JSON 格式存储数组(无论解决方案可能需要多么复杂)?
【问题讨论】:
标签: python arrays json python-3.x numpy