如何解决如何将python字典列表另存为matlab结构化数组的数组?
在八度
M =
scalar structure containing the fields:
x =
1 2 3 4
y =
5 6 7 8
one = 1
two =
1 2
>> save -7 struct.mat M
在Ipython中:
In [450]: dat = io.loadmat('struct.mat')
In [451]: dat
Out[451]:
{'__header__': b'MATLAB 5.0 MAT-file, written by Octave 4.2.2, 2019-02-08 18:49:49 UTC',
'__version__': '1.0',
'__globals__': [],
'M': array([[(array([[1., 2., 3., 4.]]), array([[5., 6., 7., 8.]]), array([[1.]]), array([[1., 2.]]))]],
dtype=[('x', 'O'), ('y', 'O'), ('one', 'O'), ('two', 'O')])}
这M
是(1,1)结构化数组,所有字段均为object
dtype。这样,它们可以各自具有自己的形状。标量是(1,1)矩阵。
解决方法
我正在尝试创建一个要在Matlab环境中读取的文件。Matlab中的结构如下所示
trx(1) =
x: [1×1500 double]
y: [1×1500 double]
a: [1×1500 double]
b: [1×1500 double]
theta: [1×1500 double]
firstframe: 1
endframe: 1500
nframes: 1500
off: 0
trx(2) =
x: [1×751 double]
y: [1×751 double]
a: [1×751 double]
b: [1×751 double]
theta: [1×751 double]
firstframe: 750
endframe: 1500
nframes: 751
off: -749
因此,很自然地我创建了一个带有必填字段的python字典并创建了一个列表,然后使用savemat。但是,当我在matlab中加载时,我只会得到单元格数组。我也尝试使用此方法, 但是问题是并非所有字段都是具有相同形状的数组,例如“
firstframe”是一个int。然后,当我使用fromarrays()但它抱怨,因为形状不匹配。
我现在正尝试将字典转换为结构化数组,但未找到任何相关内容。并且还尝试创建一个numpy记录,以允许数组使用不同的形状。任何光线都非常欢迎
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。