Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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 包含数组float32元素的字典_Python_Json_Python 3.x_Numpy - Fatal编程技术网

Python 包含数组float32元素的字典

Python 包含数组float32元素的字典,python,json,python-3.x,numpy,Python,Json,Python 3.x,Numpy,我有两个空列表,它们在代码的后面附加了值;这是在Python 3.5中完成的: times = [] amounts = [] 采用这些值后,列表如下所示: times = [1, 2, 3, 4] amounts = [12.34, 12.43, 87.65, 98.01] 我已将这两个列表合并到一本词典中: data = dict(zip(times, amounts)) {1: array([[12.34]], dtype=float32), 2: array([[12.43]],

我有两个空列表,它们在代码的后面附加了值;这是在Python 3.5中完成的:

times = []
amounts = []
采用这些值后,列表如下所示:

times = [1, 2, 3, 4]
amounts = [12.34, 12.43, 87.65, 98.01]
我已将这两个列表合并到一本词典中:

data = dict(zip(times, amounts))
{1: array([[12.34]], dtype=float32), 2: array([[12.43]], dtype=float32)} 
我需要将此字典序列化为JSON文件输出,但在打印字典时,我一直得到这种奇怪的输出:

data = dict(zip(times, amounts))
{1: array([[12.34]], dtype=float32), 2: array([[12.43]], dtype=float32)} 
我无法创建一个仍在dict中的float数据类型的JSON文件。有人知道如何将float32转换为JSON所需的字符串值吗

当我使用json.dumps时,我得到以下信息:

array([[12.34]], dtype=float32) is not JSON serializable

根据您向我们展示的
时间
金额
,我做
转储
没有问题:

In [140]: times
Out[140]: [1, 2, 3, 4]
In [141]: amounts
Out[141]: [12.34, 12.43, 87.65, 98.01]
In [142]: dd = dict(zip(times, amounts))
In [143]: dd
Out[143]: {1: 12.34, 2: 12.43, 3: 87.65, 4: 98.01}
In [144]: json.dumps(dd)
Out[144]: '{"1": 12.34, "2": 12.43, "3": 87.65, "4": 98.01}'
但这本词典并不像你所说的那样印刷。要得到它,我必须将
数量
转换为一个数组

In [147]: arr = np.array(amounts,'float32')[:,None,None]
In [148]: arr.shape
Out[148]: (4, 1, 1)
In [149]: arr
Out[149]: 
array([[[12.34]],

       [[12.43]],

       [[87.65]],

       [[98.01]]], dtype=float32)
In [150]: dd = dict(zip(times, arr))
In [151]: print(dd)
{1: array([[12.34]], dtype=float32), 2: array([[12.43]], dtype=float32), 3: array([[87.65]], dtype=float32), 4: array([[98.01]], dtype=float32)}
这是不可序列化的-无
ndarray
is(无额外代码)


您使用的是什么版本的Python?在Python3.6.5中,使用
print(data)
我得到输出
{1:12.34,2:12.43,3:87.65,4:98.01}
print(data)
为我显示
{1:12.34,2:12.43,3:87.65,4:98.01}
。什么版本的python?编辑:无法在2.7或3.6中复制此内容。在我看来,您也有来自
numpy
的混合代码。使用更多信息发布更新将其转换为列表,首先尝试
dict(zip(times,amounts.tolist())