python - numpy - 多维 bool 掩码

标签 python numpy

我对 Python 和 numpy 还很陌生,如果没有手动迭代,我就无法让它工作。

我有一个带有浮点值的 n 维数据数组和一个形状相同的 bool “掩码”数组。由此,我需要获取一个与其他两个数组形状相同的新数组,其中包含数据数组中的所有值,其中同一位置的掩码数组为 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 的位置替换数据值,以防止新的内存分配。

谢谢!

最佳答案

这应该有效

data[~mask] = 0

Numpy bool 数组可以用作索引 ( https://docs.scipy.org/doc/numpy-1.15.0/user/basics.indexing.html#boolean-or-mask-index-arrays )。该操作将仅应用于值为“True”的像素。在这里,您首先需要反转您的掩码,使 False 变为 True。您需要反转,因为您想要对具有 False 值的像素进行操作。

关于python - numpy - 多维 bool 掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53814869/

相关文章:

python - couchdb-pythons ViewField中map函数的含义

python - 我的线性回归神经网络出了什么问题

python - 查找重叠的列/行集

python - 使用 'None' 进行成对操作的 numpy 索引

python - 是否有一种python方式从列表或numpy数组中采样N个连续元素

python - 如何使用 SerializerMethodField 创建延迟字段?

python - 如何判断一个序列是否可变?

python - pip安装numpy失败错误代码1

python - 如何向数组添加属性名称?

python - 从 Tkinter 内的 For 循环返回不同的标签 (python)