2017-07-21 40 views
2

私は.matファイルに保存した25x4x3セルアレイを持っていますが、今はPythonにロードする必要があります。セル配列(.matファイル)をPythonにロード

シンプルな.matファイル私はよく知っていますが、Pythonには新しく、この問題はちょっと頭がおかしいです。 25の次元と4つの次元は、私のコードで後で呼び出す必要がある整数を表します。セル配列の3次元には、日時配列、データ、およびそのデータのラベルの文字配列のリストが含まれています。

擬似コード

.mat(1,1,1) = datetime arrays; 
.mat(1,1,2) = data corresponding to datetime arrays; 
.mat(1,1,3) = labels for each column in that data. 

はもちろん、私はloadmat('.mat')でのPythonにこれをロードする必要があると私の変数エクスプローラが.MATファイルが表示されないので、私は混乱してしまいます。私は正確にdatettimeのインデックス、浮動小数点数などの数値を正しく変換するために内容をどのように分割するのか分かりません。

ガイダンスをいただければ幸いです!

は、今のところ私は単に持っている:

filemat = 'Pdata.mat' 
Pdata = sio.loadmat(filemat) 

それは私が言うことができるものからオブジェクトとして.MATをロードしています。

+0

'Pdata'は辞書でなければなりません。' Pdata ['mat'] 'は' mat'セルをエンコードするオブジェクトでなければなりません。混合データを持つ 'cell'から来るので、単純なnumpyの数値配列ではありません。以前の 'loadmat'の質問は、そのような構造から情報を抽出する方法を示しています(サイドバーを参照)。変数を表示しなければならないかもしれません(大きすぎない場合)。 – hpaulj

+0

私の最後の答え:https://stackoverflow.com/a/42258001/901925;またはhttps://stackoverflow.com/questions/32723802/scipy-and-preserving-mat-file-mat-matlab-data-file-structure – hpaulj

答えて

1

あなたはほぼあります。

まず、私はいくつかのサンプルMatlabのデータを作成してみましょう:

a = num2cell(rand(25,4,3)); 
a{13} = 'abc'; 
save('/tmp/tmp4Python.mat','a') 

今のPython

import scipy.io 
mat = scipy.io.loadmat('/tmp/tmp4Python.mat') 

それをロードし、私たちがアクセスしたい場合は今変数

a = mat['a'] 

を割り当てます'abc' string以下のようにします(Pythonのインデックス作成は0から始まりますが、MATLABのインデックス作成1から始まります:

関連する問題