python-CSR矩阵中元素的总和

我想找到一种方法来操作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类型.

上一篇:685 vue3 mixin,extends


下一篇:python-快速选择行,其中至少N个列在numpy / scipy中为true