NumPy數(shù)組不是JSON可序列化的創(chuàng)建NumPy數(shù)組并將其保存為Django上下文變量后,加載網(wǎng)頁(yè)時(shí)收到以下錯(cuò)誤:array([ 0, 239, 479, 717, 952, 1192, 1432, 1667], dtype=int64) is not JSON serializable這是什么意思?
3 回答

神不在的星期二
TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊
我經(jīng)常“jsonify”np.arrays。首先嘗試在數(shù)組上使用“.tolist()”方法,如下所示:
import numpy as npimport codecs, json a = np.arange(10).reshape(2,5) # a 2 by 5 arrayb = a.tolist() # nested lists with same data, indicesfile_path = "/path.json" ## your path variablejson.dump(b, codecs.open(file_path, 'w', encoding='utf-8'), separators=(',', ':'), sort_keys=True, indent=4) ### this saves the array in .json format
為了“unjsonify”數(shù)組使用:
obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()b_new = json.loads(obj_text)a_new = np.array(b_new)

郎朗坤
TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
一些其他numpy編碼器似乎有點(diǎn)過(guò)于冗長(zhǎng)。
檢查對(duì)象是否來(lái)自模塊numpy,如果是,則ndarray.tolist
用于a ndarray
或.item
用于任何其他numpy特定類(lèi)型。
使用json.dumps
default
kwarg:
default應(yīng)該是為無(wú)法以其他方式序列化的對(duì)象調(diào)用的函數(shù)。
import numpy as npdef default(obj): if type(obj).__module__ == np.__name__: if isinstance(obj, np.ndarray): return obj.tolist() else: return obj.item() raise TypeError('Unknown type:', type(obj))dumped = json.dumps(data, default=default)
添加回答
舉報(bào)
0/150
提交
取消