我有一个非常大的Scipy稀疏矩阵(CSR_MATRIX)。我只想知道如何计算矩阵的每一行的值之和,以及矩阵每一列的值之和。
我有一个执行相同操作的代码,但它使用的是CSC_MATRIX。这两行和列的总和之间有什么不同吗?
我以为也许我可以得到其他人也可以使用的快速响应,否则我可以自己对其进行测试。
from scipy.sparse import *
from scipy import *
row = array([0,0,1,2,2,2])
col = array([0,2,2,0,1,2])
data = array([1,2,3,4,5,6])
csr_matrix( (data,(row,col)), shape=(3,3) ).todense()
rowsums = []
colsums = []
#compute rowsums and colsums
因此
rowsums
应该是[3, 3, 15]
和colsum
应该是[5, 5, 11]
。我知道我可以使用matrix.getrow(i)和matrix.getcol(i)来获取每一行和每一列,并可以使用sum()函数来获取总和,但是我关心的是性能。我需要一个更有效的解决方案。
最佳答案
使用axis
方法的sum
参数:
In [2]: row = array([0,0,1,2,2,2])
In [3]: col = array([0,2,2,0,1,2])
In [4]: data = array([1,2,3,4,5,6])
In [5]: a = csr_matrix((data, (row, col)), shape=(3,3))
In [6]: a.A
Out[6]:
array([[1, 0, 2],
[0, 0, 3],
[4, 5, 6]])
In [7]: a.sum(axis=0) # sum the columns
Out[7]: matrix([[ 5, 5, 11]])
In [8]: a.sum(axis=1) # sum the rows
Out[8]:
matrix([[ 3],
[ 3],
[15]])
关于python - 如何获得Scipy稀疏矩阵(csr_matrix和csc_matrix)中每一行的总和和每一列的总和?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20612769/