在 networkx 2.1 中,如果将图形分配给新的空图形,并且从新图形中删除了边,为什么它要从旧图形中删除边缘?



>我通过将 4 个图合并为

WaterWayNWK=nx.from_pandas_edgelist(WaterWayUID,'Node-A','Node-B',['Distance'])
RoadNWK=nx.from_pandas_edgelist(Road_ODUID,'Node-A','Node-B',['Distance'])
RailNWK=nx.from_pandas_edgelist(RailUID,'Node-A','Node-B',['Distance'])
TerminalNWK=nx.from_pandas_edgelist(TerminalUID,'Node-A','Node-B',['Distance'])
Network_lst=[WaterWayNWK,RoadNWK,RailNWK,TerminalNWK]
SynchoromodalNWK=nx.compose_all(Network_lst)

然后我将其分配给一个空的虚拟图

Dummy=nx.Graph()
Dummy=SynchoromodalNWK

最后,我正在从新图中删除节点并计算两者中的边数。

print('before removal:',len(SynchoromodalNWK.edges()))
Dummy.remove_nodes_from(['RI3_1177', 'WI3_1177'])
print(len(Dummy.edges()))
print(len(SynchoromodalNWK.edges()))

输出为:-

runfile('C:/Users/NaVnEeT/Desktop/adj/untitled2.py', 
wdir='C:/Users/NaVnEeT/Desktop/adj')
before removal: 2343
2339
2339

为什么从原始边缘中删除?

在 Python 中,变量名称绑定到值。

Dummy=nx.Graph()将变量名Dummy绑定到值nx.Graph()

赋值Dummy=SynchoromodalNWKDummy重新绑定到值SynchoromodalNWK, 渲染第一个赋值掘金。

所以在这次作业之后,Dummy is SynchoromodalNWK是真的。两个变量,DummySynchoromodalNWK都"绑定"(或者你可以说"引用")相同的值。 修改Dummy修改SynchoromodalNWK

如果您希望DummySynchoromodalNWK的副本(以便修改Dummy不会影响SynchoromodalNWK),请使用

Dummy = SynchoromodalNWK.copy()

Dummy=nx.Graph()是没有必要的。

最新更新