Python to MATLAB: exporting list of strings using scipy.io

wwwilliam picture wwwilliam · Mar 12, 2010 · Viewed 8.1k times · Source

I am trying to export a list of text strings from Python to MATLAB using scipy.io. I would like to use scipy.io because my desired .mat file should include both numerical matrices (which I learned to do here) and text cell arrays.

I tried:

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

In MATLAB, I load test.mat and get a character array:

my_list =

adg
beh
cfi

How do I make scipy.io export a list into a MATLAB cell array?

Answer

Justin Peel picture Justin Peel · Mar 12, 2010

You need to make my_list an array of numpy objects:

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})

Then it will be saved in a cell format. There might be a better way of putting it into a np.object, but I took this way from the Scipy documentation.