使用savemat保存和加载Python dict会导致错误

Fra*_*ter 9 python scipy mat-file

这是我得到的错误的最小例子.如果我正确理解文档,这应该是有效的,但似乎我没有.

a={}
a['test1']=1
a['test2']=2
a['test3']=3
import scipy.io as io
io.savemat('temp',{'a':a})
b = io.loadmat('temp')
b['a'].keys()

Traceback (most recent call last):
  File "<input>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'keys'
Run Code Online (Sandbox Code Playgroud)

tal*_*ies 11

您似乎在scipy.io.savemat旨在能够保存标准字典的假设下运行.我不相信是这样的.字典参数包含写入Matlab文件的numpy数组的名称.所以你可以做这样的事情

import scipy.io as io
import numpy as np

y1=np.array([1,2,3,4])
y2=np.array([10,20,30,40])
y3=np.array([100,200,300,400])

a={}
a['test1']=y1
a['test2']=y2
a['test3']=y3
io.savemat('temp',a)
b = io.loadmat('temp')

print b['test1']
print b['test2']
print b['test3']
Run Code Online (Sandbox Code Playgroud)

这使:

[[1]
 [2]
 [3]
 [4]]
[[10]
 [20]
 [30]
 [40]]
[[100]
 [200]
 [300]
 [400]]
Run Code Online (Sandbox Code Playgroud)