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