DiGraph.to_undirected#

DiGraph.to_undirected(reciprocal=False, as_view=False)[source]#

返回有向图的无向表示。

参数:
reciprocalbool (可选)

如果为 True,则只保留在原始有向图中双向都存在的边。

as_viewbool (可选,默认为 False)

如果为 True,则返回原始有向图的无向视图。

返回:
GGraph

一个无向图,具有相同的名称和节点,并且如果 (u, v, data) 或 (v, u, data) 在有向图中,则包含边 (u, v, data)。如果两个方向的边都存在于有向图中且它们的边数据不同,则只创建一个边,并任意选择其中一个边数据使用。如果需要,您必须手动检查和更正这一点。

另请参阅

Graph, copy, add_edge, add_edges_from

注意

如果图中同时存在双向边 (u, v) 和 (v, u),则新无向边的属性将是这两个有向边属性的组合。边数据按照遇到边的(任意)顺序更新。如需更自定义地控制边属性,请使用 add_edge()。

这将返回边、节点和图属性的“深拷贝”(deepcopy),尝试完全复制所有数据和引用。

这与类似的 G=DiGraph(D) 不同,后者返回数据的浅拷贝(shallow copy)。

有关浅拷贝和深拷贝的更多信息,请参阅 Python copy 模块:https://docs.pythonlang.cn/3/library/copy.html

警告:如果您已通过子类化 DiGraph 在数据结构中使用类似字典的对象,则这些更改不会转移到通过此方法创建的 Graph。

示例

>>> G = nx.path_graph(2)  # or MultiGraph, etc
>>> H = G.to_directed()
>>> list(H.edges)
[(0, 1), (1, 0)]
>>> G2 = H.to_undirected()
>>> list(G2.edges)
[(0, 1)]