如何从图形中删除小组件

A R*_*ob4 4 python networkx

我是 networkx 的新手,请帮忙。

我有一组数据,我已经处理过这些数据来生成节点和边。大约有 5000 组节点,其中包含 2 个以上的链接(组中总共最多 10 个节点)。但问题是还有几千对节点之间只有一条边,即节点 a 链接到节点 b 但都没有链接到任何其他节点。

我想从图表中删除这些配对节点。

有没有办法过滤掉这些?

Joe*_*oel 7

所以我们的目标是从少于 3 个节点的组件中删除所有节点(这包括存在的孤立节点)。

for component in list(nx.connected_components(G)):
    if len(component)<3:
        for node in component:
            G.remove_node(node)
Run Code Online (Sandbox Code Playgroud)

使用nx.connected_components. 它返回一个组件生成器。如果我不把list它放在一边,它会一次生成一个,然后执行给定组件的步骤。完成所有这些后,它将生成下一个组件。但是因为G已经被修改,python 不能确定这是否表现良好。所以它会死(抱怨字典改变了大小——改变了节点的数量G)。通过把它变成一个列表,在它开始循环之前所有的组件都被找到了。因此,在找到组件时,图表不会发生变化。