如何访问字段一个struct在使用Python loadmat一个.MAT文件导入?
题
问题它要求(和答案)。如何读.MAT文件这是在使用SciPy的Matlab的创建,我想知道如何访问领域的进口结构。
我在Matlab文件从中我可以导入一个结构:
>> load bla % imports a struct called G
>> G
G =
Inp: [40x40x2016 uint8]
Tgt: [8x2016 double]
Ltr: [1x2016 double]
Relevant: [1 2 3 4 5 6 7 8]
现在我想要做同样在Python:
x = scipy.io.loadmat('bla.mat')
>>> x
{'__version__': '1.0', '__header__': 'MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Wed Jun 07 21:17:24 2006', 'G': array([[<scipy.io.matlab.mio5.mat_struct object at 0x0191F230>]], dtype=object), '__globals__': []}
>>> x['G']
array([[<scipy.io.matlab.mio5.mat_struct object at 0x0191F230>]], dtype=object)
>>> G = x['G']
>>> G
array([[<scipy.io.matlab.mio5.mat_struct object at 0x0191F230>]], dtype=object)
的问题是,如何能访问该结构G的成员:Inp
,Tgt
,Ltr
和Relevant
,在Matlab中办法可以
解决方案
首先,我建议你升级到SciPy的SVN如果可能的话 - 已有的MATLAB IO积极开发有一些很显着的速度提升了最近
也提到它可能是值得尝试struct_as_record=True
。但除此之外,你应该能够通过玩弄交互式把它弄出来。
您G是MIO结构对象的数组 - 你可以检查G.shape
例如。在这种情况下,我认为G = x['G'][0,0]
应该给你想要的对象。那么你应该能够访问G.Inp
等。
不隶属于 StackOverflow