我有一个由不同搜索条件应用于数据帧而获得的布尔掩码列表。这里是一个包含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]
numpy.logical_or
代替or_
,看起来它的速度大约快4-6倍。 - JoeCondronoperator.or_
减少掩码时,就好像NaN是False一样。使用numpy.logical_or
使得结果掩码成为dtype对象,然后进行掩码处理会导致ValueError:Cannot mask with non-boolean array containing NA / NaN values
。(最初我尝试过np.any(masks, axis=0)
,但结果也是同样的错误。) - bli