У меня есть большой массив numpy
, к которому я применил фильтр. Я хотел бы идентифицировать смежные области в этом замаскированном массиве. Здесь я определяю область как смежную, если для любого индекса (x1,y1)
к любому другому индексу (x2,y2)
они принадлежат той же области, если существует путь значений True
вдоль равных целочисленных шагов вдоль осей ( диагонали являются действительными шагами).
Это может быть не так ясно, как простая картина. С учетом маски:
0010000
0100000
0110000
0000011
1000010
Должны быть определены три региона, так что результат будет примерно таким:
[ [[0,2],[1,1],[2,1],[2,2]], [[3,5],[3,6],[4,5]], [[4,0]] ]
Я бы хотел использовать что-то встроенное в numpy
, не прибегая к написанию собственного алгоритма Flood Fill . Небольшое исследование в документах только обнаружило 1D версию того, что я спрашиваю.