0

我在这里有一些价值观。打印数组显示值就好了。然而,执行 Jsonpickle 显示了一些关于 numpy 和 py/tuple 项目的信息。不知道为什么,并试图清除缓存并重建。那并没有解决问题。有谁知道为什么会发生这种情况?我所有的其他数组都用 jsonpickle 打印得很好。

似乎我指的是一些记忆而不是价值。

print(test)
[104.97287576678693, 99.802264802045, 115.59585412670378, 103.42889046311696, 116.20011484134734]


print(jsonpickle.encode(test))
[{"py/reduce": [{"py/function": "numpy.core.multiarray.scalar"}, {"py/tuple": [{"py/reduce": [{"py/type": "numpy.dtype"}, {"py/tuple": ["f8", false, true]}, {"py/tuple": [3, "<", null, null, null, -1, -1, 0]}]}, {"py/b64": "7lq4mEM+WkA="}]}]}, {"py/reduce": [{"py/function": "numpy.core.multiarray.scalar"}, {"py/tuple": [{"py/id": 2}, {"py/b64": "+eB3TljzWEA="}]}]}, {"py/reduce": [{"py/function": "numpy.core.multiarray.scalar"}, {"py/tuple": [{"py/id": 2}, {"py/b64": "SNhYeSLmXEA="}]}]}, {"py/reduce": [{"py/function": "numpy.core.multiarray.scalar"}, {"py/tuple": [{"py/id": 2}, {"py/b64": "1Sn88HLbWUA="}]}]}, {"py/reduce": [{"py/function": "numpy.core.multiarray.scalar"}, {"py/tuple": [{"py/id": 2}, {"py/b64": "/cF6rs4MXUA="}]}]}]
4

2 回答 2

4

错误的:

jsonpickle.encode(list(np.array([1, 2, 3, 4])))

'[{"py/reduce": [{"py/function": "numpy.core.multiarray.scalar"}, {"py/tuple": [{"py/reduce": [{"py/type": "numpy.dtype"}, {"py/tuple": ["i8", 0, 1]}, {"py/tuple": [3, "<", null, null, null, -1, -1, 0]}]}, {"py/b64": "AQAAAAAAAAA="}]}]}, {"py/reduce": [{"py/function": "numpy.core.multiarray.scalar"}, {"py/tuple": [{"py/id": 2}, {"py/b64": "AgAAAAAAAAA="}]}]}, {"py/reduce": [{"py/function": "numpy.core.multiarray.scalar"}, {"py/tuple": [{"py/id": 2}, {"py/b64": "AwAAAAAAAAA="}]}]}, {"py/reduce": [{"py/function": "numpy.core.multiarray.scalar"}, {"py/tuple": [{"py/id": 2}, {"py/b64": "BAAAAAAAAAA="}]}]}]'

正确的:

jsonpickle.encode(np.array([1, 2, 3, 4]).tolist())
'[1, 2, 3, 4]'
于 2021-05-27T13:05:17.927 回答
0

编码 numpy 数组时,请确保必须通过注册其处理程序来启用 numpy 扩展:

>>> import jsonpickle.ext.numpy as jsonpickle_numpy
>>> jsonpickle_numpy.register_handlers()

之后,编码应该可以工作

于 2021-08-13T17:58:28.900 回答