Python到MATLAB:使用scipy.io导出字符串列表


问题内容

我正在尝试使用scipy.io将文本字符串列表从Python导出到MATLAB。我想使用scipy.io,因为我想要的.mat文件应该同时包含数值矩阵(我在这里学到)和文本单元格数组。

我试过了:

import scipy.io
my_list = ['abc', 'def', 'ghi']
scipy.io.savemat('test.mat', mdict={'my_list': my_list})

在MATLAB中,我加载test.mat并获得一个字符数组:

my_list =

adg
beh
cfi

如何使scipy.io将列表导出到MATLAB单元格数组中?


问题答案:

您需要使my_list成为numpy对象的数组:

import scipy.io
import numpy as np
my_list = np.zeros((3,), dtype=np.object)
my_list[:] = ['abc', 'def', 'ghi']
scipy.io.savemat('test.mat', mdict={'my_list': my_list})

然后它将以单元格格式保存。将其放入np.object可能会有更好的方法,但是我从Scipy文档中采用了这种方法。