Numpy从np数组中删除维度

Kev*_*vin 27 python arrays numpy

我有一些我想要使用的图像,问题是有两种图像都是106 x 106像素,一些是彩色的,一些是黑色和白色.

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

(106106)

和一个三(3)

(106,106,3)

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

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

np.shape(np.delete(Xtrain[0], [2] , 2))
Out[67]: (106, 106, 2)
Run Code Online (Sandbox Code Playgroud)

Mat*_*ith 52

您可以使用numpy的花式索引(Python的内置切片表示法的扩展):

x = np.zeros( (106, 106, 3) )
result = x[:, :, 0]
print(result.shape)
Run Code Online (Sandbox Code Playgroud)

版画

(106, 106)
Run Code Online (Sandbox Code Playgroud)

形状(106, 106, 3)意味着你有3套具有形状的东西(106, 106).因此,为了"剥离"最后一个维度,您只需选择其中一个(这就是花哨的索引所做的).

你可以保留任何你想要的切片.我随意选择保留第0个,因为你没有指定你想要的东西.所以,result = x[:, :, 1]result = x[:, :, 2]将给予所需的形状,以及:这一切只是取决于哪一个片段,你需要保持.

  • 一般来说你没有,但我认为这个具体问题(有些)是清楚的.OP似乎暗示他关注的是保持(106,106)形状 (3认同)

小智 7

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

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

Pred_mask[...,0] #Remove Last Dim  
Run Code Online (Sandbox Code Playgroud)