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)
label の構造パラメータを使用すると、接続を指定できます (たとえば、フィーチャが斜めに接触していても接続されている)、その目的にも使用できますか?