【发布时间】:2016-12-26 23:19:22
【问题描述】:
scipy.io.loadmat 不是将 MATLAB 结构加载为 dict(如 http://docs.scipy.org/doc/scipy/reference/tutorial/io.html 和其他相关问题中所述),而是将其加载为一个奇怪的 ndarray,其中值是数组数组,而字段名称被视为 dtype。最小的例子:
(MATLAB):
>> a = struct('b',0)
a =
b: 0
>> save('simple_struct.mat','a')
(Python):
In[1]:
import scipy.io as sio
matfile = sio.loadmat('simple_struct.mat')
a = matfile['a']
a
Out[1]:
array([[([[0]],)]],
dtype=[('b', 'O')])
此问题在 Python 2 和 3 中仍然存在。
【问题讨论】:
-
您是否真的阅读了上面使用的文档链接中的MATLAB structs section?看起来这是所有预期的行为......它继续描述如何使用
squeeze_me和struct_as_record参数。 -
不够紧密!谢谢。我猜在这个问题link 和现在之间,structs_as_record 默认已变为 True。