在Python中沿轴折叠掩码数组-Numpy

在Python中沿轴折叠掩码数组-Numpy,python,arrays,numpy,mask,boolean-operations,Python,Arrays,Numpy,Mask,Boolean Operations,我有一个二维掩码数组,我想使用逻辑OR操作将其沿轴0折叠为True。我想知道是否有一个numpy函数来完成这个过程。我的代码看起来像: >>> all_masks array([[False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False,

我有一个二维掩码数组,我想使用逻辑OR操作将其沿轴0折叠为
True
。我想知道是否有一个numpy函数来完成这个过程。我的代码看起来像:

>>> all_masks
array([[False, False, False, ..., False, False, False],
       [False, False, False, ..., False, False, False],
       [False, False, False, ..., False, False, False],
       [False,  True, False, ..., False,  True, False],
       [False, False, False, ..., False, False, False],
       [False,  True, False, ..., False,  True, False]])

>>> all_masks.shape
(6, 870)

>>> output_mask
array([False, True, False, ..., False, True, False])

>>> output_mask.shape
(870,)
我通过使用for循环实现了这个过程。然而,我知道使用for循环会使我的代码变慢(并且有点混乱),所以我想知道这个过程是否可以通过numpy函数或类似的函数来完成

使用for循环折叠遮罩的代码:

mask_out = np.zeros(all_masks.shape[1], dtype=bool)
for mask in all_masks:
    mask_out = mask_out | mask

return mask_out

您可以使用
np.logical\u或.reduce

In [200]: all_masks = np.array([[False, False, False, False, False, False],
       [False, False, False, False, False, False],
       [False, False, False, False, False, False],
       [False,  True, False, False,  True, False],
       [False, False, False, False, False, False],
       [False,  True, False, False,  True, False]])

In [201]: np.logical_or.reduce(all_masks, axis=0)
Out[207]: array([False,  True, False, False,  True, False])
是一个,每个ufunc都有一个

您可以使用:

输出:

array([False,  True, False, False,  True, False])

@麦克斯科利尔:事实上,我认为任何短路都是错误的。有一次是这样,但是。
array([False,  True, False, False,  True, False])