2013-08-07 116 views
3

我想找到一种方法,以获得其元素的基础上,column..For例如总和操纵scipy.sparse.csr_matrix,如果我有这样的:总和的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

回答

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