Python中如何将不同维度的3D数组合并为(60,60,60)维度数组
实现方案
默认你使用NumPy处理多维数组,两种常见实现方式如下:
方式1:展平补零后重塑
这种方式会保留所有原始元素,空缺位置用0填充,最终得到目标维度数组:
import numpy as np # 假设三个数组分别为arr1, arr2, arr3 # arr1.shape = (60,10,20), arr2.shape=(60,20,10), arr3.shape=(60,30,30) # 把每个数组的后两维展平 arr1_flat = arr1.reshape(60, -1) # 维度变为(60, 200) arr2_flat = arr2.reshape(60, -1) # 维度变为(60, 200) arr3_flat = arr3.reshape(60, -1) # 维度变为(60, 900) # 拼接展平后的数组 concat_flat = np.concatenate([arr1_flat, arr2_flat, arr3_flat], axis=1) # 维度变为(60, 1300) # 补零到第二维长度为3600(因为60*60=3600) pad_width = ((0,0), (0, 3600 - concat_flat.shape[1])) padded_flat = np.pad(concat_flat, pad_width=pad_width, mode='constant', constant_values=0) # 重塑为目标维度 result = padded_flat.reshape(60, 60, 60)
方式2:按空间位置拼接填充
如果你希望把三个数组放在后两维60x60平面的指定位置,剩下区域补0,可参考如下实现:
import numpy as np # 初始化全零的目标数组 result = np.zeros((60,60,60), dtype=arr1.dtype) # 把arr1放到左上角 [:, 0:10, 0:20] result[:, 0:10, 0:20] = arr1 # 把arr2放到arr1右侧 [:, 0:20, 20:30] result[:, 0:20, 20:30] = arr2 # 把arr3放到左下角 [:, 10:40, 0:30] result[:, 10:40, 0:30] = arr3 # 其余位置默认保留0,你也可以根据需求调整放置位置
注意:原始三个数组的总元素量仅为目标数组的约36%,两种方式都会产生大量占位值,你可以根据实际业务需求调整占位值或者合并逻辑。
内容的提问来源于stack exchange,提问作者ci song
相关产品推荐
相关产品推荐

