如何从图表中删除小组件

时间:2016-07-11 13:58:44

标签: python networkx

我是网络新手,可以提供一些帮助。

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

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

有没有办法过滤掉这些?

1 个答案:

答案 0 :(得分:2)

因此,我们的目标是从少于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中的节点数量发生了变化)。通过将其转换为列表,可以在开始循环之前找到所有组件。因此,在找到组件时,图表不会发生变化。