Numpy/Scipy 连通组件

4

我正在使用Python编写一个程序,用于在L * L矩阵中查找值为1、0或-1的“岛屿”。

我需要它能够找到这些连通组件的“区域”,对每个区域进行标记,并能够返回给定元素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个回答

2

类似这样:

label_count_m1 = np.bincount(label_m1.ravel())
label_count_m1[0] = 0
sizes_m1 = label_count_m1[label_m1]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接