如何对3维numpy数组执行reshape操作以得到目标2维矩阵
Numpy 三维数组重塑解决方案
实现代码
import numpy as np # 定义原始数组 a = np.array([[[1., 2., 3., 4.], [1., 2., 3., 4.], [1., 2., 3., 4.]], [[5., 6., 7., 8.], [5., 6., 7., 8.], [5., 6., 7., 8.]]]) # 核心操作:调整维度顺序后重塑 result = a.transpose(2, 1, 0).reshape(-1, 2) # 如果需要输出整数格式,可以加上类型转换 # result = result.astype(int)
输出结果与需求完全一致:
[[1. 5.] [1. 5.] [1. 5.] [2. 6.] [2. 6.] [2. 6.] [3. 7.] [3. 7.] [3. 7.] [4. 8.] [4. 8.] [4. 8.]]
实现逻辑
- 原始数组shape为
(2, 3, 4),三个维度分别对应:块数量(共2个数据块)、单块行数(每个块3行)、单块列数(每个块4列) transpose(2, 1, 0)调整维度顺序为「单块列数→单块行数→块数量」,调整后shape变为(4, 3, 2),维度顺序完全匹配目标数组的元素排列规则reshape(-1, 2)自动计算总行数,将前两个维度展平后保留最后2列,即可得到目标结构
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

