在Python中沿轴折叠掩码数组-Numpy
我有一个二维掩码数组,我想使用逻辑OR操作将其沿轴0折叠为在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,
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])