大きなスパース行列の行を正規化する関数を作成したいと思います(合計が1になるように)。
from pylab import *
import scipy.sparse as sp
def normalize(W):
z = W.sum(0)
z[z < 1e-6] = 1e-6
return W / z[None,:]
w = (rand(10,10)<0.1)*rand(10,10)
w = sp.csr_matrix(w)
w = normalize(w)
ただし、これにより次の例外が発生します。
File "/usr/lib/python2.6/dist-packages/scipy/sparse/base.py", line 325, in __div__
return self.__truediv__(other)
File "/usr/lib/python2.6/dist-packages/scipy/sparse/compressed.py", line 230, in __truediv__
raise NotImplementedError
合理的に単純な解決策はありますか?私はこれを見てきましたが、実際に除算を行う方法がまだはっきりしていません。