Python からいくつかのデータを保存し、後で Python と Matlab の両方で読み取る必要があります。明らかな選択はscipy.io.savematのようです。しかし、何が起こるか見てください:
>>> a = {'foo': 0, 'bar': [1,2,3,4,5], 'baz': {'key1': range(10), 'key2': 'Oh No
Mr Bill!'}}
>>> scipy.io.savemat('a.mat',a)
>>> b = scipy.io.loadmat('a.mat')
>>> b['foo']
array([[0]])
>>> b['bar']
array([[1],
[2],
[3],
[4],
[5]])
>>> b['baz']
array([[([u'Oh No Mr Bill!'], [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]]
)]],
dtype=[('key2', '|O4'), ('key1', '|O4')])
>>> b['baz']['key1']
array([[[[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]]]], dtype=object)
>>> b['baz']['key2']
array([[[u'Oh No Mr Bill!']]], dtype=object)
>>> b['baz']['key2'][0,0]
array([u'Oh No Mr Bill!'],
dtype='<U14')
すべてが各辞書の 2D 配列として格納されているようです... (たとえば、foo['baz']['key1'] は 4D 配列として表示されます) これはバグですか、それともこの動作には理由がありますか?