如何将四个形状为(3,2,1)的3D NumPy数组合并为(3,2,4)?
解决方案:合并四个(3,2,1) NumPy数组为(3,2,4)
嘿,这个问题我刚好处理过,其实用NumPy内置的concatenate函数就能完美解决!
核心思路
你的四个数组形状都是(3,2,1),我们需要在**最后一个维度(也就是axis=2)**上把它们拼接起来——因为每个数组的最后一维长度是1,四个这样的数组拼在一起,最后一维的长度就会变成1*4=4,刚好得到你想要的(3,2,4)形状。
代码示例
先创建几个测试用的数组,然后执行合并操作:
import numpy as np # 生成四个形状为(3,2,1)的示例数组 arr1 = np.random.rand(3, 2, 1) arr2 = np.random.rand(3, 2, 1) arr3 = np.random.rand(3, 2, 1) arr4 = np.random.rand(3, 2, 1) # 在axis=2维度上完成拼接 merged_array = np.concatenate([arr1, arr2, arr3, arr4], axis=2) # 验证结果形状 print(merged_array.shape) # 输出:(3, 2, 4)
小提示
- 一定要注意指定
axis=2,如果选错轴(比如axis=0或axis=1),得到的数组形状会完全不符合预期; - 如果你习惯用
np.stack,也可以通过堆叠后压缩多余维度实现,但concatenate是更直接的方式,不需要额外处理:# 用stack实现的备选方案 merged_array = np.squeeze(np.stack([arr1, arr2, arr3, arr4], axis=2), axis=-1)
内容的提问来源于stack exchange,提问作者RaduS
相关产品推荐
相关产品推荐

