Numpy 从 np 数组中删除一个维度

新手上路,请多包涵

我有一些我想处理的图像,问题是有两种图像都是 106 x 106 像素,一些是彩色的,一些是黑白的。

一个只有两 (2) 个维度:

(106,106)

和一个与三个 (3)

(106,106,3)

有没有办法去掉最后一个维度?

我试过 np.delete,但它似乎没有用。

 np.shape(np.delete(Xtrain[0], [2] , 2))
Out[67]: (106, 106, 2)

原文由 Kevin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

您可以使用 numpy 的奇特索引(Python 内置切片符号的扩展):

 x = np.zeros( (106, 106, 3) )
result = x[:, :, 0]
print(result.shape)

印刷

(106, 106)

(106, 106, 3) 的形状意味着你有 3 组具有形状 (106, 106) 的东西。所以为了“剥离”最后一个维度,你只需要选择其中一个(这就是花式索引所做的)。

你可以保留任何你想要的切片。我任意选择保留第 0 个,因为你没有指定你想要什么。所以, result = x[:, :, 1]result = x[:, :, 2] 也会给出所需的形状:这完全取决于你需要保留哪个切片。

原文由 Matt Messersmith 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您有多个维度,这可能会有所帮助

pred_mask[0,...] #Remove First Dim

Pred_mask[...,0] #Remove Last Dim

原文由 Mohamed Fathallah 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题