2017-12-16 11 views
1

自分で作成していないデータセットがあります。私はMATLABのファイルを逆アセンブルして、興味のある配列を取得し、jsonに変換しました。私がPythonにインポートしたい配列は 'Y_test.mat'と呼ばれます。dtype = '<U55201'をnumpyの配列に変換します。

{'__version__': '1.0', '__header__': 'MATLAB 5.0 MAT-file, Platform: MACI64, Created on: Sat Dec 16 10:25:44 2017', 'Y_test': array([ u'[1,2,3]'], dtype='<U55201'), '__globals__': []} 

は、今私はnumpyの配列にY_testを変換したいが、私はちょうどそれを得ることはできません。

mat = spio.loadmat('Y_test.mat', squeeze_me=False) 
print mat 

これは私にこのような出力を与える:これは私のコードの一部です。私はnp.array(ast.literal_evalを())しようとしたが、これは私のfollowigエラーを与える:

ValueError: malformed string 

私は全く明らかに何かを逃した場合ので、私に言い訳してください決してパイソンの専門家です。

ありがとうございます。 Alex

+0

文字列はユニコード形式です。あなたは 'str [mat]'を試してからnumpy配列に変換しましたか? –

+0

私はあなたにその結果を知らせようとします。この方法を試してみると、このエラーが発生します: 'type'オブジェクトに属性 '__getitem__'がありません –

+0

jsonモジュールを使用 –

答えて

0

関数loadmatは、.matファイルに含まれる変数の辞書を返します。ファイルには、その名前がファイル自体の名前と一致する単一の変数が含まれている場合があります。次に、文字列から数値配列を取得するには、それを評価することができます。この場合、不規則な配列に変換されなければならないリストが得られます。だからこれを試してみてください:

actual_numpy_matrix = np.array(eval(mat['Y_test'][0])) 
+0

私はこれを使って、実際にはさらに進歩を遂げました。 print(str(numpy_matrix))の印刷出力として[u '[1、2、3]']を取得します。どうもありがとうございました。 –

+0

numpy_matrixの出力は何ですか? – freude

+0

投稿を修正しました。また、新しい行を試してください – freude

関連する問題