Numpy/Scipy Подключенные компоненты
Я пишу программу на Python, чтобы найти "острова" 1 с, 0 с или -1 с в матрице L*L. Мне нужно, чтобы Он нашел эти "области" связанных компонентов, пометил каждый из них и был способен вернуть для данного элемента матрицы m[x][y] размер острова, которому он принадлежит.
import numpy as np
from scipy import ndimage
from scipy import misc
import matplotlib.pyplot as plt
m = np.random.randint(-1,2,(L,L))
mask1 = (m == -1)
mask2 = (m == 0)
mask3 = (m == 1)
label_m1, nb_labels1 = ndimage.label(mask1)
label_m2, nb_labels2 = ndimage.label(mask2)
label_m3, nb_labels3 = ndimage.label(mask3)
Это должно дать мне помеченные острова для случайной матрицы m (только пример), но я не знаю, как получить размер "области", которой принадлежит данная точка. Не могли бы вы помочь мне? У меня почти нет опыта программирования, так что простите, если вопрос глупый.
Спасибо
1 ответ
Что-то вроде:
label_count_m1 = np.bincount(label_m1.ravel())
label_count_m1[0] = 0
sizes_m1 = label_count_m1[label_m1]