x = array([[0.0, 0.0, 0.0, 0.0, 0.0, -1.0, -1.0, 0.0, 0.0], [0.0, 0.0, 0.0,
    0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 1.0, 1.0, 50.0, 50.0, 1.0, 5.0, 
    0.0, 0.0], [0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0], [0.0, 3.0, 
    1.0, 50.0, 50.0, 2.0, 1.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
    0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0], [0.0, 
    0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]])
islands = []
fl = x.flat
while fl.index < x.size:
    coord = fl.coords
if next(fl) > 0:
    length = 1
while next(fl) > 0:
    length += 1
islands.append([coord, length])
for (row, col), length in islands:
    pass
Эффективный поиск диапазона индексов для положительных значений в массиве 2D numpy