小编mer*_*gen的帖子

scipy.io.loadmat嵌套结构(即字典)

使用给定的例程(如何使用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)
Run Code Online (Sandbox Code Playgroud)

现在我想将mat-File读回到python中.我尝试了以下方法:

vig=spio.loadmat('xy.mat',squeeze_me=True)
Run Code Online (Sandbox Code Playgroud)

如果我现在想要访问我得到的字段:

>> 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.
Run Code Online (Sandbox Code Playgroud)

但是,通过使用该选项struct_as_record=False,可以访问该字段:

v=spio.loadmat('xy.mat',squeeze_me=True,struct_as_record=False)
Run Code Online (Sandbox Code Playgroud)

现在有可能通过它访问它

>> v['b'].c.d
array(3)
Run Code Online (Sandbox Code Playgroud)

python dictionary nested structure scipy

31
推荐指数
3
解决办法
2万
查看次数

标签 统计

dictionary ×1

nested ×1

python ×1

scipy ×1

structure ×1