2014-10-20 54 views
1

我有一個稀疏矩陣,說:翻轉行

from scipy import sparse 
a = sparse.lil_matrix((2,3),) 
a[0] = [1, 2, 3] 
a[1, 2] = 5 

所以它看起來像:

(0, 0) 1.0 
(0, 1) 2.0 
(0, 2) 3.0 
(1, 2) 5.0 

我想知道 - 有一種簡單的方法來翻轉行(類似numpy.fliplr等效)? ...所以我會得到輸出:

(0, 0) 3.0 
(0, 1) 2.0 
(0, 2) 1.0 
(1, 0) 5.0 

回答

0

一種方法是將數組轉換爲csr格式,然後操縱行索引:

from scipy import sparse 
a = sparse.lil_matrix((2,3),) 
a[0] = [1, 2, 3] 
a[1, 2] = 5 

a = a.tocsr() 
a.indices = -a.indices + a.shape[1] - 1 
print(a) 

產量

(0, 2) 1.0 
    (0, 1) 2.0 
    (0, 0) 3.0 
    (1, 0) 5.0 
0

你可以做多指標分配:

ii = [2,1,0,3] 
a[:,1] = a[ii,:] 

其中ii是您必須以某種方式創建的索引數組。