2017-06-01 151 views
1

如何有效編寫Python字典,其中的值是Numpy Nd-Arrays到Json文件? 我得到一個錯誤,說Numpy Nd-Array不是Json-Serializable。有什麼辦法可以解決這個問題嗎?使用Numpy Nd-Array值將Python字典寫入Json文件的有效方法

+0

您是否嘗試將Numpy數組轉換爲(可能嵌套的)列表? –

+0

是的,可以將Numpy數組轉換爲列表,然後工作。我的問題更傾向於其他方向:是否有更快捷的方法來實現這一目的,而沒有將所有的轉換和複製到列表中? – AlexGuevara

回答

1

JSON僅支持有限數量的數據類型。如果您想將其他類型的數據存儲爲JSON,那麼您需要將其轉換爲JSON接受的內容。 Numpy數組的明顯選擇是將它們存儲爲(可能是嵌套的)列表。幸運的是,Numpy數組有一個.tolist方法可以高效地執行轉換。

import numpy as np 
import json 

a = np.array(range(25), dtype=np.uint8).reshape(5, 5) 
print(a) 
print(json.dumps(a.tolist())) 

輸出

[[ 0 1 2 3 4] 
[ 5 6 7 8 9] 
[10 11 12 13 14] 
[15 16 17 18 19] 
[20 21 22 23 24]] 
[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19], [20, 21, 22, 23, 24]] 

.tolist將數組元素天然Python類型(整數或浮點數)轉換,如果它可以這樣做無損。如果您使用其他數據類型,我建議您在致電.tolist之前將它們轉換爲可移植的東西。