6

私はPythonが初めてのMatlabユーザーです。Matlab の文字列のセル配列を Mat ファイルに書き込み、Python (おそらく scipy.io.loadmat) を使用してこの Mat ファイルを同様のタイプ (文字列のリストまたは文字列のタプルなど) にロードしたいと思います。しかし、ロードマットは物事を配列に読み込み、それをリストに変換する方法がわかりません。「tolist」関数を試してみましたが、期待どおりに動作しませんでした (Python 配列または numpy 配列の理解が不十分です)。例えば:

Matlab コード:

cell_of_strings = {'thank',  'you', 'very', 'much'};
save('my.mat', 'cell_of_strings');

Python コード:

matdata=loadmat('my.mat', chars_as_strings=1, matlab_compatible=1);
array_of_strings = matdata['cell_of_strings']

次に、変数 array_of_strings は次のとおりです。

array([[[[u't' u'h' u'a' u'n' u'k']], [[u'y' u'o' u'u']],
    [[u'v' u'e' u'r' u'y']], [[u'm' u'u' u'c' u'h']]]], dtype=object)

この array_of_strings を Python のリストまたはタプルに変換して次のようにする方法がわかりません

list_of_strings = ['thank',  'you', 'very', 'much'];

Python や numpy の配列オブジェクトに詳しくありません。あなたの助けは非常に高く評価されます。

4

2 に答える 2

5

これを試してみてください:

import scipy.io as si

a = si.loadmat('my.mat')
b = a['cell_of_strings']                # type(b) <type 'numpy.ndarray'>
list_of_strings  = b.tolist()           # type(list_of_strings ) <type 'list'>

print list_of_strings 
# output: [u'thank', u'you', u'very', u'much']
于 2011-01-27T08:03:21.290 に答える