音楽プログラミングの超入門(仮)

Python / 音楽情報処理 初心者が、初心者にも分かるような記事を書きたい。

Pythonで疎行列を保存する方法

Python のライブラリである SciPy には、疎行列を扱うためのパッケージ scipy.sparse が入っていますが、これに pickle とかが対応してないっぽいです。なのでこれをファイルとして保存する/読み出す方法を書いときます。
 scipy.io にある mmwrite, mmread 関数を使えば保存/読み出しができるようです。

Input and output (scipy.io) — SciPy v0.13.0 Reference Guide

使い方

関数の使い方はリファレンスを読めば分かるけど、一応、例を載せておきます。

# -*- coding: utf-8 -*-
from scipy.io import mmwrite, mmread
from scipy.sparse import csr_matrix

def test():
    ### 何か適当な疎行列
    arr = [[0, 0, 2, 0 ,-1], 
           [0, -5, 0, 0, 0],
           [0, 0, 0, 0, 0],
           [0, 0, 0, 1.2, 0]]
    arr = csr_matrix(arr)

    ### 保存
    mmwrite("./arr", arr)
    ### 読み出し
    new_arr = mmread("./arr.mtx").todense()

    print new_arr

if __name__ == "__main__":
    test()

こんな感じです。
mmwrite で保存すると、勝手に .mtx という拡張子が付くのに注意しよう。