使用给定的例程(如何用scipy加载Matlab.mat文件),我无法访问更深层次的嵌套结构来将它们恢复到字典中
为了更详细地介绍我遇到的问题,我给出了以下玩具示例:
load scipy.io as spio
a = {'b':{'c':{'d': 3}}}
# my dictionary: a['b']['c']['d'] = 3
spio.savemat('xy.mat',a)
现在我想把mat文件读回python。我尝试了以下方法:
vig=spio.loadmat('xy.mat',squeeze_me=True)
如果我现在想访问我得到的字段:
>> vig['b']
array(((array(3),),), dtype=[('c', '|O8')])
>> vig['b']['c']
array(array((3,), dtype=[('d', '|O8')]), dtype=object)
>> vig['b']['c']['d']
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/<ipython console> in <module>()
ValueError: field named d not found.
但是,通过使用选项struct_as_record=False
,可以访问该字段:
v=spio.loadmat('xy.mat',squeeze_me=True,struct_as_record=False)
现在可以通过
>> v['b'].c.d
array(3)
只是对mergen的答案的一个增强,不幸的是,如果它到达对象的单元格数组,它将停止递归。下面的版本将列出它们,并继续递归到单元格数组元素(如果可能的话)。
下面是一些函数,这些函数可以重建字典,只需使用这个loadmat而不是scipy.io的loadmat即可:
找到一个解决方案,可以访问“scipy.io.matlab.mio5_params.mat_struct object”的内容,可以通过:
相关问题 更多 >
编程相关推荐