如何将形状为(2,2,3)的NumPy数组指定维度展平为(2,6)?
你遇到的问题是flatten()会将数组所有维度完全展开为一维,而你需要的是仅合并后两个维度、保留第一个维度不变,以下是常用的实现方案:
实现方法
- 方法1:
reshape方法(最推荐,简单高效)
只需指定保留第一个维度长度为2,剩余维度自动合并即可,写法如下:
import numpy as np # 原始数组 X = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]) # 转换为(2, 6)形状 X = X.reshape(2, -1)
其中-1会自动根据数组总元素数计算对应维度的长度,无需手动计算2*3=6,适配性更强。
- 方法2:按指定维度拼接
如果需要更明确的子数组拼接逻辑,可以使用np.concatenate实现:
X = np.concatenate(X, axis=1)
该写法会把第一维度下的每一个子数组沿着第二个维度拼接,最终得到目标结构。
- 方法3:自定义展平逻辑(仅适合复杂场景)
如果后续有更复杂的子数组处理需求,可以使用np.apply_along_axis实现:
X = np.apply_along_axis(lambda x: x.flatten(), 1, X).reshape(2, -1)
内容的提问来源于stack exchange,提问作者Miku
相关产品推荐
相关产品推荐

