如何在numpy中为多维数组新增行列 使形状从(2,2,2,3)变为(2,3,3,4)
Numpy四维数组形状调整方案
注意:为避免变量名冲突,我们将你初始化的原始数组重命名为base_arr,防止和填充值a重名。
完整实现代码
import numpy as np # 1. 初始化原始数组和填充值列表Y,示例中Y取[5,7],可替换为你实际的a、b数值 base_arr = np.zeros((2,2,2,3), int) Y = [5, 7] # 2. 扩展最后一维:从3维调整为4维,最后一位填充对应Y值 # 将Y扩维到可广播形状,生成待拼接的最后一列数组,形状为(2,2,2,1) last_dim_pad = np.full((2,2,2,1), fill_value=np.array(Y).reshape(-1,1,1,1)) # 拼接后数组形状变为 (2,2,2,4) arr = np.concatenate([base_arr, last_dim_pad], axis=-1) # 3. 扩展第三个维度(索引为2):从2调整为3,末尾新增一行全为对应Y值 third_dim_pad = np.full((2,2,1,4), fill_value=np.array(Y).reshape(-1,1,1,1)) # 拼接后数组形状变为 (2,2,3,4) arr = np.concatenate([arr, third_dim_pad], axis=2) # 4. 扩展第二个维度(索引为1):从2调整为3,末尾新增一块全为对应Y值 second_dim_pad = np.full((2,1,3,4), fill_value=np.array(Y).reshape(-1,1,1,1)) # 拼接后得到最终形状为(2,3,3,4)的数组 arr = np.concatenate([arr, second_dim_pad], axis=1)
运行上述代码后输出的arr和你给出的预期效果完全一致。
内容的提问来源于stack exchange,提问作者Khalid Sherz
相关产品推荐
相关产品推荐

