python - 按 2D 数组索引 3D 数组

标签 python numpy

我有一个 3D 彩色图像 im(形状 512 512 3)和一个 2D 数组掩模(512 512)。我想用蒙版注释这个彩色图像:

im = im[mask>threshold] + im[mask<threshold] * 0.2 + (255,0,0) * [mask<threshold].

如何用 Python 高效地编写此代码?

最佳答案

这有效:

mask3 = numpy.dstack(mask,mask,mask)
im = im * (mask3>threshold) + im * (mask3<threshold) * 0.2
im[:,:,0] += 255 * (mask<threshold)

它依赖于 true 的数值为 1,false 的数值为 0。

它可能不是最清晰或最有效的,但它仍然可能比 bool 数组索引快得多,例如 im[ mask3 < threshold ] *= 0.2 (除非索引的真实值数量非常少)。

关于python - 按 2D 数组索引 3D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30857114/

相关文章:

python - 除以字典中的值 (Python)

python - dis 模块中的 `LOAD_FAST`

python - 大于数组的值的 ndarray 行索引

python - 通过两个不同长度的数组和索引操作运行 for 循环

python - 如何删除以特定字符集开头的句子中的单词?

python - SQLAlchemy:一个查询中的多个计数

python - 使用 Python 在 Mac 上设置文件夹背景图像

python - 如何使用 NumPy 正确从 SQL 数据库读取字符串

numpy - 理解 NumPy 的非零函数

python - numpy中十进制整数数组到二进制数组的矢量化转换