我想找到一种方法来操作scipy.sparse.csr_matrix,以便基于该列获取其元素的总和.例如,如果我有这个:
(2, 883) 0.0194935608679
(10, 883) 0.193169152693
(11, 883) 0.1099280996
(18, 883) 0.231353403277
(11, 884) 0.151292618076
(12, 885) 0.0897609047606
(15, 885) 0.105370721749
(10, 886) 0.116845834609
(18, 886) 0.069971527852
(0, 947) 0.111838970767
(1, 947) 0.0694444065422
(2, 947) 0.0440324424809
(4, 947) 0.0233598916271
(5, 947) 0.301621257244
(6, 947) 0.0546866477512
(7, 947) 0.162040885384
(9, 947) 0.0786245669428
(10, 947) 0.130900295682
(11, 947) 0.0496615549666
(12, 947) 0.100557533892
(13, 947) 0.114494053085
(14, 947) 0.0535641315858
(15, 947) 0.0393483107586
(16, 947) 0.0207896459813
(17, 947) 0.0538302241537
: :
列883的总和为0.5539442164
解决方法:
您可以这样做:
mymatrix[:,883].sum()
值得注意的是,如果您打算进行列式操作,则csc_matrix类型会更快.例如:
r = np.random.random((1000,1000))
a = csr_matrix(r)
b = csc_matrix(r)
In [20]: timeit a[:,88].sum()
1000 loops, best of 3: 1.88 ms per loop
In [21]: timeit b[:,88].sum()
10000 loops, best of 3: 129 us per loop
对于逐行操作,应坚持使用csr_matrix类型.