如何解决如何避免就地删除Networkx图的修改
我有一个netwrokx图,我正在尝试使用remove_edges
删除图的边缘。
我想删除原始图形中的每个边并进行H
后处理,以获取更多统计信息,例如连接到已删除边的边。
import networkx as nx
import matplotlib.pyplot as plt
# fig 1
n=10
G = nx.gnm_random_graph(n=10,m=10,seed=1)
nx.draw(G,with_labels=True)
plt.show()
for e in [[5,0],[3,6]]:
H = G.remove_edge(e[0],e[1])
nx.draw(G,with_labels=True)
plt.show()
在上面,边在G中被移除。因此对于第二次迭代,原始图为 更长的时间。如何避免这种情况?我想为每次迭代保留原始图形,而是将边缘去除后的图形存储在另一个副本H中。
任何建议将不胜感激。
编辑:根据以下建议
n=10
G = nx.gnm_random_graph(n=10,with_labels=True)
plt.show()
G_copy = G.copy()
for e in [[5,6]]:
print(G_copy.edges())
H = G_copy.remove_edge(e[0],e[1])
nx.draw(G_copy,with_labels=True)
plt.show()
print(G_copy.edges())
获得的输出:
[(0,6),(0,7),5),(1,4),9),(2,(3,(6,9)]
[(0,9)]
预期:
[(0,9)]
解决方法
制作原始图形的副本并修改副本:
H = G.copy()
...
H.remove_edge(e[0],e[1])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。