假设我在[(1,2),(2,1),(1,3)]
之间有边,如何删除(1,3)
,因为它不像1和2之间的边那样是双向的?
答案 0 :(得分:0)
我假设这是一个DiGraph。在这种情况下,首先找到要删除的边缘。然后删除它们。
to_remove = [(v,u) for v,u in G.edges() if not G.has_edge(u,v)]
G.remove_edges_from(to_remove)
列表to_remove
具有G
中G
没有相反边缘的所有那些边(这是列表理解)。
答案 1 :(得分:0)
这个比较长,但是不要直接修改边缘
import networkx as nx
# create the graph
G = nx.DiGraph()
G.add_edges_from([(1,2),(2,1),(1,3),(4,1),(1,5),(1,6),(5,1)])
H = nx.difference(G.to_undirected().to_directed(), G) # get the uni-directional edges
G = nx.difference(G, H.to_undirected()) # get the difference graph
G.edges()
# [(1, 2), (1, 5), (2, 1), (5, 1)]