当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NetworkX Graph.copy用法及代码示例


本文简要介绍 networkx.Graph.copy 的用法。

用法:

Graph.copy(as_view=False)

返回图表的副本。

默认情况下,copy 方法返回图形和属性的独立浅拷贝。也就是说,如果一个属性是一个容器,则该容器由原始和副本共享。对新容器使用 Python 的 copy.deepcopy

如果as_view 为True,则返回视图而不是副本。

参数

as_view布尔,可选(默认=假)

如果为 True,则返回的 graph-view 提供原始图形的只读视图,而不实际复制任何数据。

返回

G图形

图的副本。

注意

所有副本都再现了图结构,但数据属性可能以不同的方式处理。人们可能需要四种类型的图表副本。

Deepcopy - A “deepcopy” 复制图形结构以及所有数据属性和它们可能包含的任何对象。整个图形对象是新的,因此副本中的更改不会影响原始对象。 (参见 Python 的 copy.deepcopy)

数据引用(浅) - 对于浅拷贝,复制图结构,但边、节点和图属性字典是对原始图中的引用。这可以节省时间和内存,但如果您更改一个图表中的属性并更改另一个图表中的属性,则可能会导致混乱。 NetworkX 不提供这种级别的浅拷贝。

独立浅层 - 此副本创建新的独立属性字典,然后对属性进行浅层副本。也就是说,作为容器的任何属性都在新图和原始图之间共享。这正是dict.copy() 提供的。您可以使用以下方式获取此样式副本:

>>> G = nx.path_graph(5)
>>> H = G.copy()
>>> H = G.copy(as_view=False)
>>> H = nx.Graph(G)
>>> H = G.__class__(G)

新鲜数据 - 对于新鲜数据,在创建新的空数据属性字典时复制图形结构。结果图独立于原始图,它没有边、节点或图属性。未启用新副本。而是使用:

>>> H = G.__class__()
>>> H.add_nodes_from(G)
>>> H.add_edges_from(G.edges)

查看 - 受dict-views 的启发,graph-views 就像原始图形的只读版本一样,提供原始结构的副本,而无需任何内存来复制信息。

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

例子

>>> G = nx.path_graph(4)  # or DiGraph, MultiGraph, MultiDiGraph, etc
>>> H = G.copy()

相关用法


注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.Graph.copy。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。