python - 如何将python字典列表保存为matlab结构化数组的数组?
问题描述
我正在尝试创建一个要在 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 记录。任何光都非常受欢迎
解决方案
在八度
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) 矩阵。
推荐阅读
- vmware-clarity - 如何在页面上居中内嵌单选按钮?
- python - QTextEdit 的 QTextDocument 在 SetText 后无法调整页面大小
- php - 如何使用 php 激活 python 脚本并且在 time.sleep 进行时不加载页面
- android - Realm 数据库是否可移植
- r - 当 R 中已知矩阵的列数时,如何将多列添加到矩阵中?
- kotlin - 是否有计划为 Spring Tools Suite 添加 Kotlin 支持?
- python - 在 Django 管理员的更改页面中显示带有表格的模型字段
- mysql - MySQL的PARTITION BY LIST中值列表的限制是多少?
- python - 如何以分钟间隔将时间戳索引添加到数据帧
- java - 线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException:3