在 python 中的 networkx 图中查找最大加权边
Finding maximum weighted edge in a networkx graph in python
我想在 networkx 图中找到 'n' 最大加权边。怎么可能实现。我构建了一个图表如下:
g_test = nx.from_pandas_edgelist(new_df, 'number', 'contactNumber', edge_attr='callDuration')
现在,我想找到最高 'n' 边权重,即最高 'n' callDurations。我还想分析这张图,从中找出趋势。请帮助我如何实现。
如果您的图形存储为 g,您可以使用以下方法访问其边,包括它们的属性:
g.edges(data=True)
这是一个 returns 元组列表。前两个条目是节点,第三个条目是属性字典,如下所示:
[(a,b,{"callDuration":10}),(a,c,{"callDuration":7})]
您可以像这样根据 callDuration 属性对该列表进行排序:
sorted(g.edges(data=True),key= lambda x: x[2]['callDuration'],reverse=True)
请注意,我们使用反向首先查看最大的 callDuration 边缘。
恐怕你的第二个问题很宽泛——你可以用网络做很多事情!看看像这样的一些教程:
https://programminghistorian.org/en/lessons/exploring-and-analyzing-network-data-with-python
让我们试试:
max(dict(g_test.edges).items(), key=lambda x: x[1]['callduration'])
求此图网络中的最大权重边。
我想在 networkx 图中找到 'n' 最大加权边。怎么可能实现。我构建了一个图表如下:
g_test = nx.from_pandas_edgelist(new_df, 'number', 'contactNumber', edge_attr='callDuration')
现在,我想找到最高 'n' 边权重,即最高 'n' callDurations。我还想分析这张图,从中找出趋势。请帮助我如何实现。
如果您的图形存储为 g,您可以使用以下方法访问其边,包括它们的属性:
g.edges(data=True)
这是一个 returns 元组列表。前两个条目是节点,第三个条目是属性字典,如下所示:
[(a,b,{"callDuration":10}),(a,c,{"callDuration":7})]
您可以像这样根据 callDuration 属性对该列表进行排序:
sorted(g.edges(data=True),key= lambda x: x[2]['callDuration'],reverse=True)
请注意,我们使用反向首先查看最大的 callDuration 边缘。
恐怕你的第二个问题很宽泛——你可以用网络做很多事情!看看像这样的一些教程: https://programminghistorian.org/en/lessons/exploring-and-analyzing-network-data-with-python
让我们试试:
max(dict(g_test.edges).items(), key=lambda x: x[1]['callduration'])
求此图网络中的最大权重边。