在Python中,查找Networkx图中的最大加权边

6
我想在一个networkx图中找到'n'个最大权重边。如何实现?我已经按照以下方式构建了一个图:
g_test = nx.from_pandas_edgelist(new_df, 'number', 'contactNumber', edge_attr='callDuration')

现在,我想找到前n个边的权重,也就是前n个呼叫持续时间。我还想分析这个图以从中找出趋势。请帮我找出实现方法。

2个回答

9
如果您的图形存储为g,您可以使用以下方式访问其边缘,包括它们的属性:
g.edges(data=True)

这将返回一个元组列表。前两个条目是节点,第三个条目是属性字典,格式如下:
[(a,b,{"callDuration":10}),(a,c,{"callDuration":7})]

您可以根据 callDuration 属性对此列表进行排序,方法如下:
sorted(g.edges(data=True),key= lambda x: x[2]['callDuration'],reverse=True)

请注意,我们使用 reverse 来查看最大的通话持续时间边缘。
很抱歉,你的第二个问题非常广泛 - 你可以使用网络做很多事情!请查看一些教程,例如这个: https://programminghistorian.org/en/lessons/exploring-and-analyzing-network-data-with-python

5

让我们试一下:

max(dict(g_test.edges).items(), key=lambda x: x[1]['callduration'])

在这个图网络中,找到最大权重的边。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接