Translate

【matファイル】pythonで辞書型リストをうまく使う【numpy,dictionary】

 pythonを勉強していると辞書型とかリストとかいろいろと出てくるけど、これって解析とかの時にも役に立つのかさっぱりわからないのが最初の印象ですよね。

しかしながら、こういった辞書型はmatファイルとかを扱うときに真価を発揮します。

ここでは、matファイルがどんな使用になっているのか、そしてmatファイルからのデータ取り出しを辞書型リストで行う方法について簡単に紹介していこうと思います。


matファイルとは?



そもそもmatファイルとはいったいどんなデータのことを指すのでしょうか?調べてみると、このファイル形式は主にmatlabで使われているファイル形式で、「ワークスペース変数を格納するもの」として紹介されています。

一目見ただけではmatファイルが何が何だかさっぱりわからないのですが、ざっくりと説明すると、データの長さとかデータ形式(float型とか)を全く気にせずに何でもぶち込むことができるファイル形式と認識してもらえればよいでしょう。

このmatファイルの優れた点が、このなんでもぶち込めるという点にあります。例えばcsvファイルの場合には、データの長さが一致していないとエラーが出てしまうということが良くあります。そういったエラーを回避して保存できるのがmatファイルの強みになります。


matファイルからのデータ取り出しは辞書型リストで行う。

matファイルが非常に便利なファイル形式であることが分かったと思うのですが、実際にどのようにmatファイルからデータを読み取り、変数として取り出すのでしょうか?

それには、辞書型リストを使います。初心者向けの教本でもよく掲載されている辞書型リストで、実際にどこで使用するのかわかりにくい奴でしたが、こういったmatファイルの取り出しの時に真価を発揮します。

まずはmatファイルの読み取りになりますが、これにはscipyのモジュールを使用します。


#必要なパッケージのインポート
import scipy.io
import nunmpy as np
data= scipy.io.loadmat(mat_filename)


ざっくりと書くとこんな感じです。この場合だと、変数名dataの中にいろいろな変数名を持ったデータが格納されています。このいろいろな変数名の中から自分で必要な変数名を取り出す際に辞書型リストを使用するというわけになります。

data1 = np.array(data['data1'])
data2 = np.array(data['data2'])
data3 = np.array(data['data3'])
例えば、matファイルの中にあるdata1,data2,data3という変数が欲しい場合にはこのような書き方になります。私の場合にはそのあとに計算処理を行うことが多いので、このデータの取り出しの時点からnp.array()を使ってnumpy配列にしてしまっています。

matファイルでデータを扱うことによって行数とかで指定するケースがぐんと減るので、ケアレスミスとかもそれに伴って減少するので、matファイルを使ったデータを保存したり、解析で読み込むのは非常におすすめだといえるでしょう。

※より実践的なpythonコードについても新たに記事を作成しました。こちらも併せて見て貰えると理解が深まると思います。