如何将两个形状为(50,5,5)的Numpy多维数组操作得到(50,5,10)数组?
解决方法:在第三维度拼接两个Numpy数组
嘿,先澄清一下:你说的“相加”应该是指把两个数组在第三个维度上合并起来吧?因为如果是常规的元素级相加(arr1 + arr2),结果还是保持(50,5,5)的形状,没法得到你要的(50,5,10)。
要实现这个需求,我们可以用Numpy里的拼接函数,下面给你两种常用的方法:
方法1:使用np.concatenate指定拼接轴
concatenate是Numpy通用的拼接函数,你只需要明确指定在**第3个维度(索引为2)**上拼接即可(Numpy的轴是从0开始计数的:(50,5,5)对应轴0=50,轴1=5,轴2=5)。
示例代码:
import numpy as np # 生成两个测试用的(50,5,5)数组 arr1 = np.random.rand(50, 5, 5) arr2 = np.random.rand(50, 5, 5) # 在轴2上拼接 combined_arr = np.concatenate([arr1, arr2], axis=2) # 检查结果形状 print(combined_arr.shape) # 输出:(50, 5, 10)
方法2:使用np.dstack快速拼接
dstack是专门用于“深度方向”拼接的函数,对于三维数组来说,它会自动在最后一个维度(也就是这里的轴2)上拼接,代码更简洁:
示例代码:
import numpy as np arr1 = np.random.rand(50, 5, 5) arr2 = np.random.rand(50, 5, 5) # 深度拼接 combined_arr = np.dstack([arr1, arr2]) print(combined_arr.shape) # 输出:(50, 5, 10)
注意事项
- 两个数组的前两个维度必须完全一致(都是50和5),否则拼接会报错;
- 如果你确实需要元素级相加同时扩展维度,那得先对其中一个数组做维度扩展再广播相加,但这和你要的(50,5,10)形状不符,所以应该还是拼接的需求。
内容的提问来源于stack exchange,提问作者Gittb
相关产品推荐
相关产品推荐

