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