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

标签 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] 等类型。

最佳答案

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

示例:

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

关于python - 有没有办法置换矩阵的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55351982/

相关文章:

python - 我可以查看指定索引处的 numpy 数组吗? (来自 "fancy indexing"的 View )

python - R 相当于 scipy.integrate.simps()?

python - 使用 scipy 确定 "bottleneck"图像区域

python - 如何使用 FFmpeg 将音频转换为 WAVE_FORMAT_PCM?

python - 如何在 numpy 数组中找到元组的索引?

python - 这段代码中的运算符 == 和 * 是用来做什么的?

python - 如何获取最大密度坐标

python - 使用 Python 通过 http 输出图像时出现问题

python - Python 中的排列增长算法和打印字符串

python - 如何在 docker 中安装 lxml