Numpy 使用二进制掩码迭代颜色通道的更好方法

Numpy better ways of iterating over colour channels using binary mask

有没有更好的方法将二进制蒙版应用于 numpy 中的颜色通道?我最终不得不一直这样做,感觉应该有。

for c in range(3):
    a_image[mask, c] = b_image[mask, c]

a_imageb_image 的形状是 (x, y, c)mask 的形状是 (x, y)

您可以简单地在 3-D 阵列上使用 2-D 掩码,而无需循环。 Numpy会为你广播到三维

a_image[mask] = b_image[mask]

简单示例:

a_image = np.arange(6).reshape(1,2,3)
#[[[0 1 2]
#  [3 4 5]]]

b_image = np.ones((1,2,3))
#[[[1. 1. 1.]
#  [1. 1. 1.]]]

mask = np.array([[False,True]])
#[[False  True]]

输出:

[[[0 1 2]
  [1 1 1]]]