gpt4 book ai didi

python - 如何添加自定义函数来计算图中的边权重?

转载 作者:行者123 更新时间:2023-12-01 02:40:27 24 4
gpt4 key购买 nike

我有一个像这样的数据框:

label1 label2 amount 
1 1 100
1 2 20
1 3 10
1 4 50
1 5 20
1 6 100
2 1 20
2 2 10
2 3 50
2 4 20
2 5 100
2 6 20
3 1 10
3 2 50
3 3 20
3 4 100
3 5 20
3 6 10
4 1 50
4 2 20
4 3 10
4 4 50
4 5 20
4 6 100
5 1 10
5 2 50
5 3 20
5 4 100
5 5 20
5 6 10
6 1 10
6 2 50
6 3 20
6 4 100
6 5 20

我从networkx创建了一个有向图,其中label1和label2是节点,数量是边的权重,我想要边权重,例如节点之间的数量总和,例如节点1和2之间计算的权重60,但networkx将50视为权重。

有没有办法添加自定义函数来计算金额总和作为重量?

最佳答案

从 pandas 数据帧制作有向图。然后您可以通过边缘数据计算路径长度或创建自定义函数,如下例所示:

import pandas as pd
import networkx as nx

# calc length of custom path via nodes list
# path have to be connected
def path_length(G, nodes):
w = 0
for ind,nd in enumerate(nodes[1:]):
prev = nodes[ind]
w += G[prev][nd]['amount']
return w

# construct directed graph
df = pd.DataFrame({'label1':[4,5,1,2,3],
'label2':[5,4,2,1,3], 'amount':[100,200,10,50,20]})
G=nx.from_pandas_dataframe(df, 'label1', 'label2', 'amount',nx.DiGraph())

# calc amount of path from edges data
w = 0
for d in G.edges([1,2], data=True):
w += d[2]['amount']
print (w)

# calc path length by custom function
print(path_length(G, [1,2,1]))

输出:

60
60

关于python - 如何添加自定义函数来计算图中的边权重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45765852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com