gpt4 book ai didi

python - 为什么 json.dumps(list(np.arange(5))) 失败,而 json.dumps(np.arange(5).tolist()) 工作

转载 作者:IT老高 更新时间:2023-10-28 22:17:56 25 4
gpt4 key购买 nike

我在最近更新了运行 Ubuntu 的计算机并且 Python 的默认版本更改为 2.7 时注意到了这个问题。

import json
import numpy as np

json.dumps(list(np.arange(5))) # Fails, throws a "TypeError: 0 is not JSON serializable"
json.dumps(np.arange(5).tolist()) # Works

numpy 数组的 list() 和 tolist() 方法有区别吗?

最佳答案

看起来 tolist() 方法将 numpy int32(或您拥有的任何大小)转换回 int,即 JSON知道该怎么做:

>>> list(np.arange(5))
[0, 1, 2, 3, 4]
>>> type(list(np.arange(5)))
<type 'list'>
>>> type(list(np.arange(5))[0])
<type 'numpy.int32'>
>>> np.arange(5).tolist()
[0, 1, 2, 3, 4]
>>> type(np.arange(5).tolist())
<type 'list'>
>>> type(np.arange(5).tolist()[0])
<type 'int'>

正如文档所说的 tolist():

Return the array as a (possibly nested) list.

Return a copy of the array data as a (nested) Python list. Data items are converted to the nearest compatible Python type.

最后一行在这里有所不同。

关于python - 为什么 json.dumps(list(np.arange(5))) 失败,而 json.dumps(np.arange(5).tolist()) 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11561932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com