numpy 如何对矩阵重新排序[复制]

yhxst69z  于 2022-11-10  发布在  其他
关注(0)|答案(3)|浏览(166)

这个问题在这里已经有答案

What is the best way to perform an anti-transpose in python?(4个答案)
3天前关门了。
谁能告诉我如何对矩阵重新排序:

[[1, 2, 3, 4, 5],
 [6, 7, 8, 9, 10],
 [11, 12, 13, 14, 15]]

致:

[[15, 10, 5],
 [14, 9, 4],
 [13, 8, 3],
 [12, 7, 2],
 [11, 6, 1]]
x8diyxa7

x8diyxa71#

由于您已经标记了问题numpy,我猜测这些是NumPy矩阵,并且您正在寻找NumPy解决方案(否则,如果这些是列表,则Ann的Zip是正确的解决方案)。
对于麻木,你可以

M[::-1,::-1].T

示例

M=np.array([[1, 2, 3, 4, 5],
  [6, 7, 8, 9, 10],
  [11, 12, 13, 14, 15]])
M[::-1,::-1].T

退货

array([[15, 10,  5],
       [14,  9,  4],
       [13,  8,  3],
       [12,  7,  2],
       [11,  6,  1]])

不出所料

jexiocij

jexiocij2#

我建议使用NumPy,如下所示:

import numpy as np

matrix = np.array([[1, 2, 3, 4, 5],
                   [6, 7, 8, 9, 10],
                   [11, 12, 13, 14, 15]])

transformed_matrix = matrix[::-1].T[::-1]

# array([[15, 10,  5],

# [14,  9,  4],

# [13,  8,  3],

# [12,  7,  2],

# [11,  6,  1]])

matrix[::-1]以相反的顺序为您提供原始矩阵(即[11, 12, 13...]在前,[1, 2, 3...]在后)。
将其与.T进行转置会使矩阵左右旋转--交换行和列。
最后,使用[::-1]索引转置将颠倒顺序,将[15, 14, 13...]放在第一位,将[5, 4, 3...]放在最后。

0vvn1miw

0vvn1miw3#

下面是使用zip()方法转置矩阵的方法:

m = [[1, 2, 3, 4, 5],
     [6, 7, 8, 9, 10],
     [11, 12, 13, 14, 15]]

print([list(i)[::-1] for i in zip(*m)][::-1])

产出:

[[15, 10, 5],
 [14, 9, 4],
 [13, 8, 3],
 [12, 7, 2],
 [11, 6, 1]]

索引[::-1]反转数组。

相关问题