2012-05-07 183 views
3

我想弄清楚如何通过列遍历scipy稀疏矩阵。我试图计算每列的总和,然后用该总和来加权该列的成员。我想要做的主要是:在列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,你可以转换成比例的因素。