如何使用NetworkX创建两个相同的图形

2024-03-29 11:20:58 发布

您现在位置:Python中文网/ 问答频道 /正文

例如:

g1 = nx.DiGraph()    
g1.add_edge(1,1,w = 1)    
g1.add_edge(1,2,w = 1)    

g1.add_edge(1,3,w = 2)    
g1.add_edge(2,2,w = 2)   

g2 = g    
print g2.predecessors(2)  #[1, 2]

g1.remove_node(1)    
print g2.predecessors(2)  #[2]

当我移除g1中的节点1时,g2也会受到影响。 我想创建与g1相同的图形g2,但是当我更改g1时,g2不会更改。 我该怎么做?谢谢


Tags: addnode图形节点removeprintnxedge
1条回答
网友
1楼 · 发布于 2024-03-29 11:20:58

在图上调用方法^{},这样就不会进行引用:

In [41]:
g1 = nx.DiGraph()    
g1.add_edge(1,1,w = 1)    
g1.add_edge(1,2,w = 1)    
​
g1.add_edge(1,3,w = 2)    
g1.add_edge(2,2,w = 2)   
​
g2 = g1.copy()    
print( 'before g2', g2.predecessors(2) ) #[1, 2]
​
g1.remove_node(1)    
print ('after g2', g2.predecessors(2))  #[2]
print ('g1 graph ', g1.predecessors(2))  #[2]

before g2 [1, 2]
after g2 [1, 2]
g1 graph  [2]

您可以看到图g2未被修改,而g1已删除一个节点

相关问题 更多 >