CSR矩阵中元素的总和

时间:2013-08-07 13:33:26

标签: python scipy sparse-matrix

我想找到一种操作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

1 个答案:

答案 0 :(得分:3)

你可以这样做:

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类型。