python - Numpy 使用二进制掩码迭代颜色 channel 的更好方法

标签 python arrays numpy array-broadcasting

有没有更好的方法将二元掩码应用于 numpy 中的颜色 channel ?我最终不得不一直这样做,感觉应该这样做。

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

形状是 (x, y, c) a_imageb_image,以及 (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]]]

关于python - Numpy 使用二进制掩码迭代颜色 channel 的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63588408/

相关文章:

python - 如何更改 matplotlib matshow 中矩阵某些元素的颜色?

python - 使用经过训练的权重绘制 3d 超平面

python - 无法更新 anaconda

python - Python 中意外的浮点表示

PHP:随机排列数组,所以没有值像对应的值

python - 根据来自另一列 pandas 的相同或更接近的值替换列中的值

python - 使用 Jinja2 (Flask) 模板引擎参数化可重用 block

python - 可以在不提供默认值的情况下使用关键字参数吗?

c++ - C++ 中用于将 wchar_t* 或 char* 分配给数组的模板方法

java - 数组重复添加相同的字符?