python - 如何收缩 NetworkX 中只有 2 条边的节点?

标签 python graph networkx

我在 NetworkX 中有一张图,大致是这样的:

a---b---c---d
    |
    e---f

我想简化它,删除只有 2 条边的中间节点。

a---b---d
    |
    f

在 NetworkX 中如何做到这一点?我只看到删除节点方法或契约(Contract)边缘。但这与节点有关。

最佳答案

可以按如下方式进行:

for node in list(G.nodes()):
    if G.degree(node) == 2:
        edges = list(G.edges(node))
        G.add_edge(edges[0][1], edges[1][1])
        G.remove_node(node)

关于python - 如何收缩 NetworkX 中只有 2 条边的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54286244/

相关文章:

python - 如何解决selenium中的点击元素问题

python - 如何在networkx中使用python随机排列图的节点?

python - Networkx:绘制平行边

python - 如何使用 Python 字符串加载 PhantomJS

python - 接受争论

java - JFreechart,带填充区域的折线图

javascript - D3.js force directed graph,通过使边缘相互排斥来减少边缘交叉

algorithm - 允许重复的有向多重图的线性排序

python - 图 st 排序或耳朵分解的任何实现?

python - 如何同时使用多个 .mo 文件进行 gettext 翻译?