python - 如何从图中删除小组件

标签 python networkx

我是 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/

相关文章:

python - 使用 NetwrokX/Matplotlib 防止边和节点重叠

python - 如何在 networkx 中为图中的节点添加标签?

python - 在大数据上计算node_centrality和edge_centrality的性能问题

python - 如何将更新后的 current_number 传递到现有变量中

python - 格子路径算法未完成 20 X 20 网格的运行

Python - 根据计算的百分比返回列表的区域

python - 导入错误: cannot import name BayesianGaussianMixture

python - 无法使用 pandas 0.17.1 附加数据帧,但可以使用 pandas 0.14.1

python - 将 LineCollection 转换为数组或动画 Networkx 图

python - 列出所有可能的 'Shortest' 路径