我正在尋找一種方法來將包含numpy數組的嵌套字典轉換爲JSON文件(以將我的實驗和數據的完整日誌保存在一個位置)。將嵌套字典中的numpy數組轉換爲列表,同時保留字典結構
我的字典裏是這樣的(該結構可以是多個嵌套比顯示代碼):
import numpy as np
data = {'foo': {'bar': np.array([1, 2, 3])}, 'goo': np.array([3,5,7]),'fur': {'dur': {'mur': np.array([7,5,8])}}}
在此代碼失敗的時刻,因爲numpy的陣列是不可序列:
with open('data.txt','w') as fl:
json.dump(data,fl)
我知道可以使用tolist()函數,但我不知道如何遍歷字典,同時保留數據結構並交換np.arrays列表。
我嘗試使用遞歸從字典中獲取單個值,但我不知道如何「生成字典」。我此刻的代碼(不JSON轉儲):
import numpy as np
def dict_walk(data):
for k, v in data.iteritems():
if isinstance(v, dict):
dict_walk(v)
else:
l = v.tolist()
print l
data = {'foo': {'bar': np.array([1, 2, 3])}, 'goo': np.array([3,5,7]),'fur': {'dur': {'mur': np.array([7,5,8])}}}
dict_walk(data)
您可能還想考慮使用[pickle](http://docs.python.org/2/library/pickle。 html),它可以讓你直接保存一個Python對象。 (當然,這個問題還是值得的,只是想指出另一種方法,以防你沒聽說過)。 – ASGM 2013-04-08 10:16:32
@ASGM感謝您的建議!我使用JSON來兼容第三方軟件,所以我決定不要泡菜。 – Matt 2013-04-08 10:24:55