Python CSR矩阵中元素的和

Python CSR矩阵中元素的和,python,scipy,sparse-matrix,Python,Scipy,Sparse Matrix,我想找到一种方法来操纵scipy.sparse.csr_矩阵,以便根据列获取其元素的总和。例如,如果我有以下内容: (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 (

我想找到一种方法来操纵
scipy.sparse.csr_矩阵
,以便根据列获取其元素的总和。例如,如果我有以下内容:

  (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\u矩阵
类型的速度要快得多。例如:

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\u矩阵
类型