2015-05-24 52 views
3

我正在用Python編寫程序來查找L * L矩陣中1s,0s或-1s的「島」。 我需要它來查找連接組件的這些「區域」,對它們中的每一個進行標記,並且能夠爲矩陣m [x] [y]的給定元素返回它所屬的島的大小。Numpy/Scipy Connected組件

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(只是一個例子)標記的島嶼,但我不知道如何讓「區域」給定的點所屬的大小。 你能幫我嗎?我幾乎沒有編程經驗,所以如果問題很愚蠢,請原諒我。

感謝

回答

2

喜歡的東西:

label_count_m1 = np.bincount(label_m1.ravel()) 
label_count_m1[0] = 0 
sizes_m1 = label_count_m1[label_m1] 
相關問題