numpy:沿轴展开数组

4

假设我有一张RGB图像:

from skimage import data
img = data.astronaut()
print(img.shape)  # (512, 512, 3)

有没有一个简洁的numpy命令可以沿着颜色通道拆开它:
R, G, B = np.unpack(img, 2)  # ?

我正在使用理解:

R, G, B = (img[:, :, i] for i in range(3))

但是有没有更简单的命令呢?
3个回答

4

或者你可以使用np.rollaxis函数 -

R,G,B = np.rollaxis(img,2)

1
你可以将长度为3的维度转置到前面,然后解包它:
R, G, B = img.transpose((2, 0, 1))

我会给其他人一些时间来提出建议,但那真的很聪明。 :) - Ricardo Magalhães Cruz

1
另外,您可以使用np.split
R, G, B = np.split(img, img.shape[-1], axis=-1)

如果您的数组形状为 (height, width, channel),您可以使用 np.dsplit 沿深度维度进行分割:
R, G, B = np.dsplit(img, img.shape[-1])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接