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

发布于 2021-01-29 15:21:47

这是我得到的错误的最小示例。如果我正确理解了文档,则应该可以正常工作,但似乎没有。

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'
关注者
0
被浏览
46
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您似乎在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']
    

    这使:

    [[1]
     [2]
     [3]
     [4]]
    [[10]
     [20]
     [30]
     [40]]
    [[100]
     [200]
     [300]
     [400]]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看