You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定3×5矩阵重排为目标5×3矩阵?

如何将3×5矩阵重排为指定的5×3矩阵

给定3×5原矩阵:

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

需要转换为如下5×3矩阵:

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

转换逻辑

观察元素映射规律:

  • 原矩阵的最后一列(5,10,15)逆序成为目标矩阵第一行(15,10,5)
  • 原矩阵的倒数第二列(4,9,14)逆序成为目标矩阵第二行(14,9,4)
  • 以此类推,原矩阵的第一列(1,6,11)逆序成为目标矩阵第五行(11,6,1)

本质是:逆序提取原矩阵的列,再将每一列的元素逆序,作为新矩阵的行。

Python 实现方法

方法1:纯列表推导式(无需第三方库)

# 定义原矩阵
matrix = [
    [1, 2, 3, 4, 5],
    [6, 7, 8, 9, 10],
    [11, 12, 13, 14, 15]
]

# 一步完成转换
result = [list(col[::-1]) for col in reversed(zip(*matrix))]

# 输出结果
for row in result:
    print(row)

输出:

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

分步解释(更易理解)

# 1. 转置原矩阵,得到所有列的元组列表
transposed = list(zip(*matrix))
# 此时 transposed = [(1,6,11), (2,7,12), (3,8,13), (4,9,14), (5,10,15)]

# 2. 逆序排列列,从右到左取列
reversed_cols = reversed(transposed)
# 此时 reversed_cols 迭代顺序为 (5,10,15), (4,9,14), ..., (1,6,11)

# 3. 对每个列逆序元素,并转为列表
result = [list(col[::-1]) for col in reversed_cols]

方法2:使用Numpy(适合大规模矩阵)

如果处理大型矩阵,Numpy的向量化操作效率更高:

import numpy as np

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

# 反转原矩阵的列顺序,再转置,最后反转行顺序
result = np.flip(matrix, axis=1).T[::-1]

# 输出结果
print(result)

输出:

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

内容的提问来源于stack exchange,提问作者Nobody

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:10:24