创建 NumPy 数组并将其保存为 Django 上下文变量后,我在加载网页时收到以下错误:
array([ 0, 239, 479, 717, 952, 1192, 1432, 1667], dtype=int64) is not JSON serializable
这是什么意思?
原文由 Karnivaurus 发布,翻译遵循 CC BY-SA 4.0 许可协议
创建 NumPy 数组并将其保存为 Django 上下文变量后,我在加载网页时收到以下错误:
array([ 0, 239, 479, 717, 952, 1192, 1432, 1667], dtype=int64) is not JSON serializable
这是什么意思?
原文由 Karnivaurus 发布,翻译遵循 CC BY-SA 4.0 许可协议
将 numpy.ndarray 或任何嵌套列表组合存储为 JSON。
class NumpyEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, np.ndarray):
return obj.tolist()
return json.JSONEncoder.default(self, obj)
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.shape)
json_dump = json.dumps({'a': a, 'aa': [2, (2, 3, 4), a], 'bb': [2]},
cls=NumpyEncoder)
print(json_dump)
将输出:
(2, 3)
{"a": [[1, 2, 3], [4, 5, 6]], "aa": [2, [2, 3, 4], [[1, 2, 3], [4, 5, 6]]], "bb": [2]}
从 JSON 恢复:
json_load = json.loads(json_dump)
a_restored = np.asarray(json_load["a"])
print(a_restored)
print(a_restored.shape)
将输出:
[[1 2 3]
[4 5 6]]
(2, 3)
原文由 karlB 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
4 回答937 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
我经常“jsonify”np.arrays。首先尝试在数组上使用“.tolist()”方法,如下所示:
为了“unjsonify”数组使用: