2D和3D numpy阵列的多态处理

时间:2013-02-15 17:54:26

标签: python numpy

我正在处理Python中的图像,需要编写一个可以处理彩色和灰度图像的程序。他们是numpy数组

颜色形状:(512,512,3)

灰度形状:(512,512)

现在我必须遍历每个图像通道,即返回:

For Color: im[:,:,0], im[:,:,1], im[:,:,2]

For Grayscale: im[:,:]

如何在没有if条件的情况下以相同的格式编写它们?我尝试了im [:,:0]用于灰度,但它超出了索引的范围。

1 个答案:

答案 0 :(得分:1)

我不确定这是否有用,但numpy提供了插入new axes的功能:

im_new = im_old[:,:,np.newaxis]

根据我的理解,这使得im_new[i,j,k]与任何im_old[i,j]的{​​{1}}相同。

(另请注意,k只是np.newaxis)的别名