hir*_*hme 6 python graph connected-components
我有一个二进制3D numpy数组,我想为其寻找连接的组件,即ID值为1的邻居元素。
data = np.random.binomial(1, 0.4, 1000)
data = data.reshape((10,10,10))
Run Code Online (Sandbox Code Playgroud)
或者,我可以获取值为1的每个元素的坐标,并获取包含三个元素的一组列表,以获取相邻的簇
coordinates = np.argwhere(data > 0)
connected_elements = []
for node in coordinates:
neighbors = #Get possible neighbors of node
if neighbors not in connected_elements:
connected_elements.append(node)
else:
connected_elements.index(neighbor).extend(node)
Run Code Online (Sandbox Code Playgroud)
如何执行此操作,或为3D设置实现2D connected_components函数?
认为:
您正在谈论(i, j, k)3D 图中节点的 6 个可能的邻居,并且“邻居”是指邻居与节点之间的距离为 1;和
“有效的连通分量”意味着nodeA和nodeB是邻居并且两个值都是1。
然后我们可以用这样的函数来获取可能的邻居:
def get_neighbors(data, i, j, k):
neighbors = []
candidates = [(i-1, j, k), (i, j-1, k), (i, j, k-1), (i, j, k+1), (i, j+1, k), (i+1, j, k)]
for candidate in candidates:
try:
if data[candidate] == 1:
neighbors.append(candidate)
except IndexError:
pass
return neighbors
Run Code Online (Sandbox Code Playgroud)