def island_cumsum_vectorized(a):
    a_ext = np.concatenate(([0], a, [0]))
idx = np.flatnonzero(a_ext[1:] != a_ext[:-1])
a_ext[1:][idx[1::2]] = idx[::2] - idx[1::2]
return a_ext.cumsum()[1:-1]
Подсчет последовательных 1 в массиве numpy