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

问题描述 投票:1回答:1

我正在研究一种方法,使用其行的排列来找到给定矩阵的最低1-Norm。问题是排列不能完全随机。 Matrix中有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]到位。

python numpy scipy permutation
1个回答
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]]  
© www.soinside.com 2019 - 2024. All rights reserved.