numpyメモ

今日はPageRankアルゴリズムpythonで実装してました。
PageRankと言えばGoogleですが、ネットワーク構造におけるノード(サイト)のランキング付けに用いられるアルゴリズムです。他にも、HITSや媒介中心性、近接中心性などあります。
ネットワークはグラフとして扱えるので、よく行列やベクトル計算が頻出します。PageRankも行列を使って求めます。
pythonで普通に行列計算(for文で)をやると時間がかかるので、numpyという行列計算に強いモジュールを使いました。

numpyメモ

メソッド等はこちらを参考 http://www.scipy.org/Numpy_Example_List

リストをmatrix型に変換

matrix型に変換することで、行列計算が可能です。

In [56]: A = [1,2,3]

In [57]: mat(A)
Out[57]: matrix([[1, 2, 3]])
matrix型で行列計算

普通の行列計算ができます。

In [62]: A = [1,2,3]

In [63]: B = [[1,2,3],[1,2,3],[1,2,3]]

In [64]: A = mat(A)

In [65]: B = mat(B)

In [66]: A*B
Out[66]: matrix([[ 6, 12, 18]])
matrix型からリストへ変換

行列計算後、各要素のデータを抜き出したりするためには、リスト型へ再変換しないといけません。

In [68]: A
Out[68]: matrix([[1, 2, 3]])

In [69]: A.A
Out[69]: array([[1, 2, 3]])

In [70]: A.tolist()
Out[70]: [[1, 2, 3]]