我试图找出如何通过列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
所有我在示例中看到的迭代器遍历整个矩阵一次,而不是做每列的。 有没有办法做我想要做什么?
我试图找出如何通过列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
所有我在示例中看到的迭代器遍历整个矩阵一次,而不是做每列的。 有没有办法做我想要做什么?
SciPy的稀疏矩阵有自己的sum
方法,你可以使用这个。 例如:
A=sp.lil_matrix((5,5))
b=1+np.arange(0,5)
A.setdiag(b[:-1],k=1)
A.setdiag(b)
print(A)
(0, 0) 1.0
(0, 1) 1.0
(1, 1) 2.0
(1, 2) 2.0
(2, 2) 3.0
(2, 3) 3.0
(3, 3) 4.0
(3, 4) 4.0
(4, 4) 5.0
f=A.sum(axis=0)
print(f)
[[1. 3. 5. 7. 9.]]
返回的总和是一个密集numpy.matrix
,你可以转换成比例的因素:
print(A/f)
[[1. 0.33333333 0. 0. 0. ]
[0. 0.66666667 0.4 0. 0. ]
[0. 0. 0.6 0.42857143 0. ]
[0. 0. 0. 0.57142857 0.44444444]
[0. 0. 0. 0. 0.55555556]]