有没有办法置换矩阵的子集?

时间:2019-03-26 07:40:52

标签: python numpy scipy permutation

我正在研究一种方法,该方法使用行的排列来查找给定矩阵的最低1-范数。问题在于排列不能完全随机。矩阵中有4个具有特殊参数的行子集。我只希望对具有此参数的行进行置换,并将它们放在同一位置。

例如第一列定义行的类型。

A = [ 

      1,   val_11, val_12, ...   #1. Row

      2,   val_21, val_22, ...   #2. Row

      2,   val_31, val_32, ...   #3. Row

      2,   val_41, val_42, ...   #4. Row

      1,   val_51, val_52, ...   #5. Row
]

因此,在此示例中,我要置换1.和5.行,并置换2.,3和4.行,将[1; 2; 2; 2; 1]之类的类型保留在适当的位置。

1 个答案:

答案 0 :(得分:0)

您只需要仔细定义您的排列即可。花式索引将完成这项工作:

示例:

from numpy.random import randint
M0 = randint(10,size=(5,5))
after=[4,2,3,1,0]
M0 = M[after]
print(M0)
print(M)

[[4 9 3 0 0]
 [3 1 7 6 0]
 [6 6 5 0 9]
 [0 4 7 1 3]
 [0 0 1 0 6]]

[[0 0 1 0 6]
 [6 6 5 0 9]
 [0 4 7 1 3]
 [3 1 7 6 0]
 [4 9 3 0 0]]