如何重塑NumPy数组或列表 拼接4个(5,5,3)矩阵为(5,5,4,3)形状
Python多矩阵堆叠为(5,5,4,3)结构实现方案
将4个形状为(5,5,3)的同结构矩阵,在每个行列坐标位置按顺序拼接4组3通道值,最终得到(5,5,4,3)的目标结构,以下是两种可直接运行的实现方式:
方案1:NumPy实现(数据处理场景推荐)
多维数组堆叠是NumPy的基础能力,直接使用np.stack在指定轴创建新维度堆叠即可,运行效率远高于手动循环,适配大尺寸矩阵场景:
import numpy as np # 预先定义的a、b、c、d4个矩阵无需修改 # axis=2 表示新插入的维度放在索引为2的位置(维度索引从0开始计数) result = np.stack([a, b, c, d], axis=2) # 形状校验 print(result.shape) # 输出 (5, 5, 4, 3),完全匹配目标结构
注意:不要误用np.concatenate,该API仅在已有维度上拼接内容,不会创建新维度,无法生成长度为4的目标维度。
方案2:纯Python列表推导实现(无第三方依赖)
如果不需要引入NumPy依赖,通过嵌套列表推导逐位置取值拼接即可,生成的原生列表结构和示例目标完全一致:
# 适配5*5固定尺寸输入 result = [ [ [a[row][col], b[row][col], c[row][col], d[row][col]] for col in range(5) ] for row in range(5) ]
如果矩阵尺寸不固定,可将硬编码的range(5)替换为range(len(a))、range(len(a[0]))的动态取值写法,适配任意同尺寸矩阵输入。
内容的提问来源于stack exchange,提问作者YS K
相关产品推荐
相关产品推荐

