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 的岛(只是一个例子),但我不知道如何获得给定点所属的“区域”的大小。你可以帮帮我吗?我几乎没有编程经验,所以如果问题很愚蠢,请原谅我。

谢谢

4

1 回答 1

2

就像是:

label_count_m1 = np.bincount(label_m1.ravel())
label_count_m1[0] = 0
sizes_m1 = label_count_m1[label_m1]
于 2015-05-24T15:12:19.043 回答