Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy数组即使在tolist()之后也不可JSON序列化_Python_Json_Python 3.x - Fatal编程技术网

Python Numpy数组即使在tolist()之后也不可JSON序列化

Python Numpy数组即使在tolist()之后也不可JSON序列化,python,json,python-3.x,Python,Json,Python 3.x,我有一个嵌套列表,如下所示: my_numpy_values = my_numpy_array.tolist() >> [[1,2,3,4], [5,6,7,8], [9,10,11,12]] 然后,我将先前存在的dict值设置为上述值,以便: my_dict >>{'key1':[[1,2,3,4],[5,6,7,8]...], 'key2':[[1,2,3,4],[5,6,7,8]...],'key3'...} 然后我简单地将其包装成一个列表: json_data

我有一个嵌套列表,如下所示:

my_numpy_values = my_numpy_array.tolist()
>> [[1,2,3,4],
[5,6,7,8],
[9,10,11,12]]
然后,我将先前存在的dict值设置为上述值,以便:

my_dict
>>{'key1':[[1,2,3,4],[5,6,7,8]...], 'key2':[[1,2,3,4],[5,6,7,8]...],'key3'...}
然后我简单地将其包装成一个列表:

json_data = [my_dict]
下一步:

这就是我得到非json可序列化错误的地方。然而,据我所知,托利斯特应该得到支持。我应该做些什么不同的事情?我当然不必为这么简单的东西编写自己的编码序列化程序

更新

这是一个有点挑战性,使一个最小的完整的可验证的例子,请容忍我。我尽了最小的努力,不管出于什么原因,它使错误消失了。完整性可能更难复制,需要许多库和计算来获得我正在使用的值。我所能做的就是提供一个动作中错误的屏幕截图:

这只是冗长的一小部分,所以在所有的钟声和口哨声中,我错过了循环引用。我不确定除了不可json序列化的问题之外,我是否还有循环引用问题,或者它是否更像是一种因果类型的问题


不管怎样,我都不明白为什么我的最小[[1,2,3,4],[5,6,7,8]…]示例在我的帖子开始时有效,而我的真实数据无效。我能看到的唯一区别是价值观;数据的结构看起来完全相同。我遗漏了什么吗?

我无法重现您的数据或传递到json.dump的特定格式的问题:


如果没有答案,这很难回答。你是否在某种程度上将列表附加到它本身?省略号使我怀疑。如果列表递归地包含自身,它将不可序列化。但它应该会给出一条信息,上面写着“检测到循环引用”。听起来你可能在某个时候把形状搞混了,从而形成了一个包含其他数组对象的数组。当你说你的dict看起来像{'key1':[1,2,3,4],[5,6,7,8],'key2':[1,2,3,4],[5,6,7,8],'key3'},这些…是否实际存在于您的实际输出中,或者您是否将它们放入示例中以表明数据大于这些值?如果是后者,您可能没有循环引用问题。@Kevin yea……s只是一个例子。谢谢你帮我排除故障!有趣的发展,我确实确认了我的最小[[1,2,3,4],[5,6,7,8]…示例确实有效,但当使用我的真实数据时,它不起作用。我已经用尽可能多的信息更新了我的帖子。
with open('data.json', 'w') as outfile:
    json.dump(json_data, outfile)
In [16]: test = [
    {"key1": [[1,2,3,4], [5,6,7,8], [9,10,11,12]], 
     "key2": [[1,2,3,4], [5,6,7,8], [9,10,11,12]], 
     "key3": [[1,2,3,4], [5,6,7,8], [9,10,11,12]]}
]

In [17]: with open("test.json", "w") as f:
    ...:     json.dump(test, f)
    ...:     

In [18]: !cat test.json
[{"key1": [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]], "key2": [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]], "key3": [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]}]