我使用 networkx
从节点列表创建了一个图。它有自循环。如何删除它们?以下是示例:
import networkx as NX
G=NX.Graph()
G.add_edge(1,2)
G.add_edge(1,1)
print (G.edges())
[(1, 2), (1, 1)]
我不想要 (1, 1)
边。
最佳答案
(下面的 networkx 1.x 说明)
如果您使用的是 networkx 2.x,请尝试
G.remove_edges_from(nx.selfloop_edges(G))
如果您有一个 MultiGraph
(例如 configuration_model
生成的),如果您有一个带有小错误的旧版本 2.x,这可能不起作用。如果是这样并且您不想升级,那么您需要在删除边缘之前将其转换为列表。
G.remove_edges_from(list(nx.selfloop_edges(G)))
此错误已得到纠正 https://github.com/networkx/networkx/issues/4068 .
在版本 1.x(当我最初回答这个问题时),它是:
G.remove_edges_from(G.selfloop_edges())
关于python - 从无向 networkx 图中删除自循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49427638/