在python中翻转稀疏数组的行

时间:2014-10-20 10:59:08

标签: python arrays sparse-matrix

我有一个稀疏数组,说:

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

2 个答案:

答案 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

答案 1 :(得分:0)

您可以执行多索引分配:

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

ii是一个索引数组,你必须以某种方式创建。