将matlab单元格数组(.mat)导入python列表

时间:2017-11-14 22:12:08

标签: python matlab cell

我正在尝试导入包含单元格数组的.mat文件。 在matlab中我这样做了:

a={'element1';'element2';'element3'};
save('m.mat','-v7','a')

我使用了'-v7',因为在python中,我使用的'scipy.io'和'loadmat'只能用于版本7.在python中:

import scipy.io as sio
i=sio.loadmat('m.mat')
i.keys()

我得到了:

dict_keys(['__header__', '__version__', '__globals__', 'a'])

最后,我使用键'a':

k=i['a']

在变量资源管理器中我得到k,这是一个对象类型但我无法访问它的元素。如何将其转换为列表?

variable explorer

谢谢

1 个答案:

答案 0 :(得分:1)

我注意到numpy.savetxt可以将您的数据转换为带有一个字符串列的csv。所以,我试着去做它的作用。而且我认为这就是你想要的:

val = []
for row in k:
    v = '%s' % tuple(row)
    val.append(v)

如果您的数据是数字,例如float,您可以尝试:

val = np.asarray(k, dtype='float').tolist()