Python 如果有3个通道,则返回所有尺寸,否则返回0

Python 如果有3个通道,则返回所有尺寸,否则返回0,python,numpy,matplotlib,pytorch,Python,Numpy,Matplotlib,Pytorch,我想画一些图像,有时是灰度的,有时是彩色的 由于我使用的是pytorch,转换后的图像要么是(50,100,1)要么是(50,100,3),这取决于它们是否是彩色的。由于matplotlib无法拍摄前者的照片,因此我需要返回以下形状: (100, 100, 3) # if it's a color picture (100, 100) # if it's a grayscale picture 这些是matplotlib可以处理的形状。以下是我的工作流程: 将numpy导入为np 将matpl

我想画一些图像,有时是灰度的,有时是彩色的

由于我使用的是
pytorch
,转换后的图像要么是
(50,100,1)
要么是
(50,100,3)
,这取决于它们是否是彩色的。由于
matplotlib
无法拍摄前者的照片,因此我需要返回以下形状:

(100, 100, 3) # if it's a color picture
(100, 100) # if it's a grayscale picture
这些是
matplotlib
可以处理的形状。以下是我的工作流程:

将numpy导入为np
将matplotlib.pyplot作为plt导入
h、 w=50100
灰色=np.random.randint(0,256,(h,w,1))
color=np.random.randint(0,256,(h,w,3)
使用同一行,我需要能够绘制彩色或灰度图像

plt.imshow(grey[:, :, 0 if grey.shape[-1] == 1 else :]
plt.imshow(color[:, :, 0 if color.shape[-1] == 1 else :]
但是这是不正确的
python
语法。

你就不能写吗

plt.imshow(grey[:,:,0] if grey.shape[-1] == 1 else grey)
plt.imshow(color[:,:,0] if color.shape[-1] == 1 else color)