假设我有一个函数euc_2d(graph, n1, n2)
,它计算同一图的两个节点之间的欧几里德距离。每个节点都有一个给定的 pos=(x,y)
,该值在图创建时分配。
NetworkX 提供了一个函数来获取图的所有边的总权重,即 graph.size(weight='weight')
。此方法的问题在于,它假设每当我添加一条边时,我都应该使用 lambda 函数显式分配适当的边权重,例如 graph.add_edge(u,v,weight=?) 。
但是,这非常不方便(而且很冗长),因为我一直在图表中添加和删除边。
那么,每当我询问图表的总权重时,有没有一种Pythonic方式可以告诉NetworkX透明地使用euc_2d()
?
最佳答案
graph.size
和 graph.add_edge
都不使用函数来评估权重,它们只是存储具有给定键的值。为了更容易使用,只需定义一个函数来添加具有适当权重的边:
def add_euc2d_edge(graph, u, v):
graph.add_edge(u, v, weight=euc_2d(graph, u, v))
关于python - Networkx:使用公共(public)函数进行边权重计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17370507/