scipy.io.loadmat嵌套结构(即字典)
scipy.io.loadmat嵌套结构(即字典)
使用给定的例程(如何使用scipy加载Matlab .mat文件),我无法访问更深层嵌套的结构以将它们恢复为字典。
为了更详细地呈现我遇到的问题,我给出以下玩具示例:
import scipy.io as spio a = {'b':{'c':{'d': 3}}} # 我的字典: 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) /in () 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)