如何将python字典列表另存为matlab结构化数组的数组?

时间:2019-02-08 18:28:27

标签: python matlab numpy structured-array

我正在尝试创建一个要在Matlab环境中读取的文件。 matlab中的结构看起来像这样

Name    Score1    Score2     Score3    Age
Dan          A         C          C    21
Paty         B         A          B    24
Marcus       C         D          B    18
Zoe          A         A          B    NaN

所以我自然地用所需的字段创建了一个python字典并创建了一个列表,然后使用savemat。但是,当我在matlab中加载时,我只会得到单元格数组。我也尝试使用this,但问题是并非所有字段都是具有相同形状的数组,例如'firstframe'是一个整数。然后,当我使用fromarrays()但由于形状不匹配而抱怨时。

我现在正在尝试将字典转换为结构化数组,但未找到任何相关内容。并且还尝试创建一个numpy记录,以允许数组使用不同的形状。任何灯光都非常受欢迎

1 个答案:

答案 0 :(得分:1)

在八度音阶中

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)矩阵。