Python 包含数组float32元素的字典
我有两个空列表,它们在代码的后面附加了值;这是在Python 3.5中完成的: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]],
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())