从无向网络x图中删除自循环

时间:2018-03-22 11:34:41

标签: python networkx

我使用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)边缘。

4 个答案:

答案 0 :(得分:9)

尝试

G.remove_edges_from(G.selfloop_edges())

答案 1 :(得分:2)

不建议使用以前的方法:改为使用nx.selfloop_edges()

答案 2 :(得分:1)

不赞成将自循环方法作为图方法使用,而推荐使用2.0版中的networkx函数。

版本1.x:

G.remove_edges_from(G.selfloop_edges())

版本2.x:

G.remove_edges_from(nx.selfloop_edges(G))

答案 3 :(得分:0)

方法remove_edge可以满足您的需求。只需过滤边缘源和目标相同的时间:

for u, v in G.edges_iter():
    if u == v: 
        G.remove_edge(u,v)