假设我们有一个完整的图G,其中包含由networkx库创建的节点A,B,C .
每个节点都有一个坐标属性,如{x:2,y:4} . 目前,边权重为1,但它们应该是节点之间的欧几里德距离 . 我可以用for循环来计算它们,但效率非常低 .
所以我的问题是如何以有效的方式计算边权重?
注意:我找到this但这是一个老问题 .
编辑:我创建了我的网络如下:
# Get a complete graph
rag = nx.complete_graph(L)
if L > 0:
for i, node in enumerate(nodes):
x, y = get_coord() # This function cant be changed
rag.nodes[i]["x"] = x
rag.nodes[i]["y"] = y
1 回答
如果您预先拥有数据,我们可以使用
numpy
和/或pandas
来首先计算批量距离,然后将数据加载到图表中 .比如我们可以先用以下方法构造一个n×2矩阵:
然后我们可以使用
scipy
来计算距离的2d矩阵,例如:例如
A
是:那么
B
将是:现在我们可以基于该矩阵构建图形:
现在我们看到权重匹配: