Python Numpy“反转”布尔掩码操作

eig*_*tor 3 python boolean numpy

当我有一个数组 a 和一个布尔掩码 b 时,我可以找到“掩码”向量 c。

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

c = a[b]
Run Code Online (Sandbox Code Playgroud)

现在假设情况正好相反。我有 c 和 b,希望到达 d(如下)。做到这一点最简单的方法是什么?

c = np.array([1, 4, 7])
b = np.array([True, False, True, True, False])

d = np.array([1, 0, 4, 7, 0])
Run Code Online (Sandbox Code Playgroud)

moz*_*way 7

你可以使用:

d = np.zeros_like(b, dtype=c.dtype)
d[b] = c
Run Code Online (Sandbox Code Playgroud)

输出:array([1, 0, 4, 7, 0])