通过2D阵列索引3D阵列

时间:2015-06-16 00:37:01

标签: 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中编写?

1 个答案:

答案 0 :(得分:2)

这有效:

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

它依赖于以下事实:true的数值为1,false为0。

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