如何修改numpy数组形状,将图像数据集调整为样本优先的维度顺序
Numpy图像数据集维度顺序调整方案
你尝试使用的np.moveaxis(X_train, -1, 0)本身就是正确的实现方式,该操作仅调整数组的轴排列顺序,不会修改图像的原始像素内容,转换后得到的数组形状恰好为你需要的(7000, 32, 32, 3)。
除了这个方案外,你也可以根据使用习惯选择以下等价实现:
- 使用
np.transpose手动指定轴顺序
原数组的四个维度索引依次为0=高度、1=宽度、2=通道数、3=图像数量,直接按目标顺序传入轴索引即可:
该方法适合需要同时调整多个轴顺序的复杂场景,语义更直白。X_train_reshaped = np.transpose(X_train, axes=(3, 0, 1, 2)) - 使用
np.rollaxis实现兼容旧版本Numpy的写法X_train_reshaped = np.rollaxis(X_train, axis=3, start=0)
注意:上述所有方法默认返回原数组的视图,不会复制数据,不会额外占用内存,也不会改变原始图像的像素值。
内容的提问来源于stack exchange,提问作者Hugo V
相关产品推荐
相关产品推荐

