2017-09-16 128 views
3

我对python很陌生,我试图制作两个数组或矩阵,将它们注册到字典中,保存到json文件中。这里是我的代码将字典保存为json python

import numpy as np 
import json 
array_1 = np.array([[1,2,3],[4,6,7]]) 
array_2 = np.array([[4,0],[9,8]]) 
json_data = { 
    'array_1': array_1, 
    'array_2': array_2, 
} 

import json 

with open('json_data.json', 'wb') as fp: 
    json.dumps(json_data, fp) 

,但我得到了以下错误:

Object of type 'ndarray' is not JSON serializable

+0

'json'模块只知道如何ser ialize本地Python类型,如'list','dict'等。您需要将数组作为Python'list'存储在'json_data'字典中,或者写一个由'json.dumps'调用的函数来自动进行转换。阅读[默认](https://docs.python.org/3/library/json.html#basic-usage)参数到'json.dumps'。 – larsks

回答

5

首先把它转换成Python列表如下:

json_data = { 
    'array_1': array_1.tolist(), 
    'array_2': array_2.tolist() 
} 

,然后尝试转储它作为一个json:

import json 

with open('json_data.json', 'w') as fp: 
    json.dumps(json_data, fp) 
+0

它给了我以下错误:dumps()需要1个位置参数,但2个给出了 – StudentOIST

+0

我只能使用'with open('json_data.json','w')作为fp: json.dump(json_data ,fp)' – PRMoureu

+2

@smvpfm:'json.dumps()'转储为一个字符串。改用'json.dump()'。 – mhawke