给定一个 0 和 1 的 N*N 数组,我想构建集群列表(集群是一组用 1 标记的连接点)。
scipy.ndimage.label
非常有用,因为它会告诉您连接了哪些点。
但我也想在我的数组上有周期性的边界条件,即点(0,j)
和(N,j)
被识别(就像我粘上一个平面来制作一个圆柱体)。所以我需要告诉 scipy.ndimage.label 特征是通过边界连接的。
例如,如果我的原始数组是:
In[187]: a = [[1, 1, 0, 0, 0, 0, 1, 1],[1, 1, 0, 1, 0, 0, 1, 1],[1, 1, 0, 0, 0, 1, 1, 1]]
labels = measurements.label(a)
print(labels)
Out [187]: (array([[1, 1, 0, 0, 0, 0, 2, 2],
[1, 1, 0, 3, 0, 0, 2, 2],
[1, 1, 0, 0, 0, 2, 2, 2]], dtype=int32), 3)
我想:
(array([[1, 1, 0, 0, 0, 0, 1, 1],
[1, 1, 0, 3, 0, 0, 1, 1],
[1, 1, 0, 0, 0, 1, 1, 1]], dtype=int32), 2)
标签的结构参数允许指定连接(例如,即使它们对角接触也连接的特征),它也可以用于此目的吗?