首页 > 解决方案 > 如何将掩码应用于保持形状和检索值的 numpy 数组?

问题描述

我正在做一个图像分割,我创建了一个掩码(布尔数组)。我现在想在保持图像阵列形状的同时提取遮罩区域的成像数据。

由于图像数据太大,这里是我的问题的简化形式:

import numpy as np

a = np.array([1, 2, 3, 4])
b = np.array([False, False, True, True])

这就是我本质上想要的:

c = np.array([False, False, 3, 4])
  = np.array([0, 0, 3, 4])

我尝试了各种切片方法,包括:

a[b]
np.extract()
np.choose()
np.take

然而,这些要么不返回数组的形状,要么只返回一个布尔值。

谢谢你的帮助。烧烤金枪鱼

标签: pythonnumpyimage-processing

解决方案


您可以使用np.where

np.where(b, a, 0)
# np.array([0, 0, 3, 4])

推荐阅读