2017-06-29 11 views
0

私は100x200の入力と、gridsearchを実行してPythonで分類器を作成するために使用している1x100のターゲット行列を持っています。しかし、ターゲットデータのトレーニングセットが配列ではないというエラーが発生します。私は試しました:Matlab行列をPython配列に変換するにはどうすればいいですか

target=np.asarray(matTarget) 

ここで、matTargetは、scipy.io.loadmatを使用してMatlabからインポートされたターゲットです。私も空白のサイズを取得target.size私がしようとすると

私の正確なエラーは

len() of unsized object 

です。

私は配列変換を行わないと、私は、私はまだMatlabの中に元の行列があり、また、代わりにasarrayのnp.array使用して試してみました

Expected array-like (array or non string sequence) got {'_header_': b'Matlab matfile ... Array([[1],[1]...)} 

を取得します。

私はprint(matTarget.keys())を行う場合、私は( 'ヘッダ `' バージョン '' グローバル」、 'y_train'])

y_trainはマットファイル自体

の名前で取得します

答えて

1

scipy.io.loadmatのドキュメントによれば、値が含まれている行列を辞書に返します。

戻り値: mat_dict:dictの

辞書の値としてキーとして変数名、およびロードされたマトリックスと。

だから、numpyのでそれを使用する前に、その名前によってあなたの行列を選択する必要があります。

matrix = matTarget['name of matrix'] 
+0

だから、あなたのラインでは、行列は「行列の名前」と同じですか?ですから、私がMatlabからインポートした行列はscipy.io.loadmatを使ってmatTargetと呼ばれています。私が作成しようとしている行列はちょうど目標です。だから私はあなたの行に応じてコードを書く場合、私は 'target = matTarget [' target ']'を得るが、ターゲットがそれ自身のものとして定義されている場合、どのように機能するのだろうか? – a13a22

+0

@aksharagarwalいいえ、 '' name of matrix''は文字列リテラルで、Matlabファイルの実際の名前で置き換えてください。 'matrix'は' matTarget [...] 'が返す行列への参照を格納する変数です。 'matTarget'は、行列の名前をキーとして、行列自体を値として含む辞書です。 'print(matTarget.keys())'の出力を投稿できますか? –

+0

その出力を質問に追加しました。だから私は 'target2 = matTarget(' y_train ')を実行し、np.asarray(target2)としてターゲットを定義する必要がありますか?そうすることで、辞書が呼び出せないというエラーが発生します。 – a13a22

関連する問題