gpt4 book ai didi

Python 留下 10% 具有最大权重的分支 NetworkX 图

转载 作者:行者123 更新时间:2023-12-01 03:54:19 29 4
gpt4 key购买 nike

我有图表并计算了网络密度,现在我应该只保留具有最大权重的分支(网络密度的前 10%,例如 200 中权重最大的 20 个分支)。我找不到该怎么做?

最佳答案

这个问题有点令人困惑,因此,如果稍后出现更多信息,我很乐意修改回复。

I have graph and counted network density,

我假设您有一个无向(?)加权网络。因此,网络密度(对于加权情况)将通过将边的权重相加并除以可能的边数 (|V|*(|V|-1) 来计算,其中 V 是边集,| .| 表示集合的基数)。如果这就是您所拥有的,我们将计算出的网络密度称为 Q。

I should keep only the branches that have maximum weight ( first 10% of network density

所以,现在,您想要隔离那些其权重占 Q 的 10% 的边。我们称之为Qfrac=Q*(10/100.0)为此,一般来说,首先按权重按降序对边进行排序,然后开始累积它们的密度贡献,直到累积和等于(或超过)Qfrac。

在代码中,假设 G 是图,并且每条边都有 weight属性:

edgesSorted =  sorted(G.edges(data = True), key=lambda x:x[2]['weight'], reverse=False)
k=0
acc=0.0
NposCons = float(G.number_of_nodes() * (G.number_of_nodes()-1))
while (acc<Qfrac):
acc+=(edgesSorted[k][2]['weight']/NposCons
k+=1
edgeExtract = edgesSorted[0:k]

但是!

fo example 20 branches with biggest weight from 200 )

这略有不同。在这种情况下,您似乎不需要密度计算,您想要的只是从图形总共包含的 200 条边中选择 10% 的高权重边。处理方式略有不同:

同样,在代码中并具有与上面类似的假设:

edgesSorted =  sorted(G.edges(data = True), key=lambda x:x[2]['weight'], reverse=False)
edgeExtract = edgesSorted[0:int(round(G.number_of_edges() * (10/100.0)))]

希望这有帮助。

关于Python 留下 10% 具有最大权重的分支 NetworkX 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37763835/

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