labelled, n = ndimage.label(mask > 0) sizes = ndimage.sum( mask > 0, labelled, range(1, n + 1) ) keep = np.isin( labelled, np.argsort(sizes)[-2:] + 1 ) clean = ndimage.binary_fill_holes(keep)