MultiDiGraph.copy#

MultiDiGraph.copy(as_view=False)#

返回图表的副本。

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

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

参数
as_view布尔值,可选(默认值=FALSE)

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

返回
G

一份图表的副本。

参见

to_directed

返回图形的定向副本。

笔记

所有副本都复制了图形结构,但数据属性可能以不同的方式处理。有四种类型的图形副本是人们可能想要的。

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

数据引用(浅)——对于浅复制,图形结构被复制,但是边、节点和图形属性dict是对原始图形中的那些属性的引用。这节省了时间和内存,但如果您在一个图中更改属性,而在另一个图中更改属性,则可能会导致混淆。NetworkX不提供这种级别的浅拷贝。

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

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

新数据——对于新数据,在创建新的空数据属性dict时复制图形结构。生成的图形独立于原始图形,没有边、节点或图形属性。未启用新副本。取而代之的是:

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

视图——受dict视图的启发,图形视图就像原始图形的只读版本,提供原始结构的副本,而不需要任何内存来复制信息。

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

实例

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