Python 有没有办法排列矩阵的子集?

Python 有没有办法排列矩阵的子集?,python,numpy,scipy,permutation,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, va

我正在研究一种方法,通过对给定矩阵行的排列,找到该矩阵的最低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。五,。行并排列2,3。四,。保留[1;2;2;2;1]等类型的行。

您只需仔细定义排列即可。然后,将执行以下操作:

例如:

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]]  

你只需要仔细定义你的排列。然后,将执行以下操作:

例如:

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]]