NumPy - 多维布尔掩码

3

我对Python和numpy都很陌生,无法在不手动迭代的情况下使其正常工作。

我有一个浮点值的n维数据数组和一个形状相同的布尔“掩码”数组。我需要从中获取一个与两个其他数组具有相同形状的新数组,其中所有来自数据数组的值都位于掩码数组在相同位置为True的位置。其他所有值都应为0.:

# given
data = np.array([[1., 2.], [3., 4.]])
mask = np.array([[True, False], [False, True]])

# target
[[1., 0.], [0., 4.]]

看起来像是numpy.where()可以实现这个功能,但我无法让它正常工作。

赠品:不创建新的数组,而是在掩码为False的位置替换数据值,以防止新的内存分配。

谢谢!

2个回答

3
此外,您可以直接将它们相乘。因为当布尔数组作为数学运算的输入时,'True'和'False'分别被视为'1'和'0'。所以,代码如下:
#element-wise multiplication
data*mask

或者

np.multiply(data, mask)

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接