我有一个 bool 掩码列表,该列表是通过将不同的搜索条件应用于数据框而获得的。这是一个包含 4 个掩码的示例列表:
mask_list = [mask1, mask2, mask3, mask4]
我想找到列表中所有掩码的逻辑或。换句话说,
or_mask = mask_list[0] | mask_list[1] | mask_list[2] | mask_list[3]
对于包含任意数量掩码的列表,是否有一种紧凑的方法来完成此操作?我知道我可以编写一个 for 循环,如下所示,但是有没有更短、更 pythonic 的方法来做到这一点?
for i in range(len(mask_list)):
if i == 0:
temp_mask_or = mask_list[i]
else:
temp_mask_or = temp_mask_or | mask_list[i]
请您参考如下方法:
你可以使用减少:
or_(x,y) 表示 x|y 所以这会起作用:
from operator import or_
or_mask = reduce(or_,mask_list)
编辑:正如 JoeCondron 所建议的,您可以使用 numpy.logical_or 而不是 operator.or_ ,它给出相同的结果但速度更快。
