python - 如何组合多个numpy掩码

标签 python numpy

m1 = [0,1,1,3]
m2 = [0,0,1,1]
data = [10,20,30,40]

我想做这样的事情:

mask = (m1 == 1) & (m2 == 1)
data[mask] #should return 30

注意,这个例子会导致错误

最佳答案

您正在使用 python 列表而不是 numpy 数组。试试这个:

import numpy as np

m1 = np.array([0,1,1,3])
m2 = np.array([0,0,1,1])

mask = (m1 == 1) & (m2 == 1)
data[mask]
# returns array([30])

在您的示例中,当 m1 是一个列表时,m1 == 1 被评估为 False(与 m2 相同),因此掩码为 Falsedata[False] = data[0] = 10

关于python - 如何组合多个numpy掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15579260/

相关文章:

python - 从 numpy 代码中删除列表组件

Python xml - 删除空格以对齐 xml 文档

python - 类型错误 : 'int' object is not callable in loss. 向后()

python - 根据条件从另一个数据框中添加列

python - x 轴上带有日期的不连续时间序列图

python - 为什么 numpy sum 比 + 运算符慢 10 倍?

python - 根据本地时间计算 24 小时周期内每分钟的平均销售额 (HH :MM)

python - 文本编辑器将 python 创建的 UTF-8 文件显示为乱码

python - 自动将Python对象添加到字典中

python - 在 Python 中以 mm/dd/yyyy 格式显示当前日期