根据doc http://networkx.lanl.gov/reference/generated/networkx.Graph.copy.html,看来networkx.copy
方法对图进行深度复制。我最关心的是声明
这将生成图的完整副本,包括所有节点或边属性。
这是否表明它也复制了节点所包含的内容?例如,如果我有以下内容
class NodeContainer(object):
def __init__(self, stuff):
self.stuff = stuff
# ..other class stuff
g = networkx.DiGraph():
n1 = NodeContainer(stuff1)
n2 = NodeContainer(stuff2)
g.add_edge(n1,n2)
g2 = g.copy()
In the g2 = g.copy()
线是它制作深层副本NodeContainer
物体也是如此?如果是,是否存在浅拷贝的现有实现?我还没找到。我问这个问题是因为我目前用来创建一个图表的副本,我将编辑该图表(从中删除节点),但不会更改实际节点本身。因此,从这个意义上讲,我不需要深层副本,只需图结构的表示即可。
EDIT:如果可能的话我也想做一个浅reverse()
您可以使用类构造函数进行浅复制。例如。对于图表,
In [1]: import networkx as nx
In [2]: G = nx.Graph()
In [3]: G.add_edge(1,2,l=['a','b','c'])
In [4]: H = nx.Graph(G) # shallow copy
In [5]: H[1][2]['l']
Out[5]: ['a', 'b', 'c']
In [6]: H[1][2]['l'].append('d')
In [7]: H[1][2]['l']
Out[7]: ['a', 'b', 'c', 'd']
In [8]: G[1][2]['l']
Out[8]: ['a', 'b', 'c', 'd']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)