2012-05-07 19 views
3

私は、scipy sparse行列を列単位で反復する方法を理解しようとしています。私は各列の合計を計算しようとしているし、その合計でその列のメンバーに重み付けしています。私は何をしたい、基本的には次のとおりです。scipyスパース行列を列で反復する

for i=0 to #columns 
    for j=0 to #rows 
    sum=sum+matrix[i,j] 
    for j=0to #rows 
    matrix[i,j]=matrix[i,j]/sum 

私は例で見てきたイテレータのすべてが一度に代わりに列ごとにそれを行うための行列全体を反復処理します。私がやろうとしていることをする方法はありますか?

答えて

3

Scipyスパース行列には、これに使用できるsumメソッドがあります。たとえば:

A=sp.lil_matrix((5,5)) 
b=np.arange(0,5) 
A.setdiag(b[:-1],k=1) 
A.setdiag(b) 


print A 
    (1, 1) 1.0 
    (1, 2) 1.0 
    (2, 2) 2.0 
    (2, 3) 2.0 
    (3, 3) 3.0 
    (3, 4) 3.0 
    (4, 4) 4.0 

print A.sum(axis=0) 
[[ 0. 1. 3. 5. 7.]] 

返さ合計は、あなたがスケーリング係数に変換することができ、緻密numpy.matrixです。

関連する問題