我是 networkx 的新手,需要一些帮助。
我有一组数据,我已经处理这些数据以生成节点和边。大约有 5000 组节点,其中包含 2 个以上的链接(组中总共最多 10 个节点)。但问题是,还有几千对节点之间只有一条边,即节点 a 链接到节点 b 但都没有链接到任何其他节点。
我想从图表中删除这些配对节点。
有没有办法过滤掉这些?
最佳答案
所以我们的目标是从少于 3 个节点的组件中删除所有节点(这包括孤立的节点,如果它们存在的话)。
for component in list(nx.connected_components(G)):
if len(component)<3:
for node in component:
G.remove_node(node)
使用 nx.connected_components
时会出现一个小警告。它返回 generator组件。如果我没有在它周围放置 list
,它会一次生成一个,然后执行给定组件的步骤。一旦完成所有这些,它将生成下一个组件。但是因为 G
已经被修改,python 不能确定这个行为是否正常。所以它会死掉(提示字典改变了大小——G
中的节点数改变了)。通过把它变成一个列表,在它开始循环之前就找到了所有的组件。因此,在找到组件时,图表不会发生变化。
关于python - 如何从图中删除小组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38308865/