连接未知数量的掩码

Concatenating unknown number of masks

我有一个形状为 (height, width, num_of_instances) 的布尔值数组(例如 (2448, 2048, 233))。 我想要 return 一个形状为 (height, width, 1) 的数组,其中如果同一位置的 233 个掩码中的任何值都为真,则每个值都为真。 我并不总是知道实例的数量和高度和宽度。目前我正在遍历每个像素:

for j in masks.shape[0]:
   for i in masks.shape[1]:
      if any(masks[j, i, :):
          resulting_mask[j, i] = True

正如人们所预料的那样,这非常慢。那么什么是快速和 pythonic 的方式来做到这一点?

你试过吗?

resulting_mask = np.any(masks,axis=2)[:,:,None]