如何解决python:如何通过NetworkX获得度分布的第二时刻 计算二阶矩的函数用法示例:更快 - Numpy
如何通过NetworkX获取无向图的度分布的第二矩(
解决方法
我不确定您是否已经找到答案,但 here 是一些关于网络科学的很棒的文档。
对于您的问题,请特别查看第 4 章,部分:“The Meaning of Scale-Free”:
正如评论中所述,可以通过将度数平方和除以节点数来计算第二时刻(假设每个节点只存在一次并且所有节点都具有相同的概率)。
这里是计算第n_th时刻的这个计算的一般形式:
def nth_moment(g,n):
s = 0
for node in g.nodes:
s += g.degree[node] ** n
return (s/len(g))
计算二阶矩的函数用法示例:
some_graph = nx.barabasi_albert_graph(10000,2,seed=1)
print(nth_moment(some_graph,2))
更快 - Numpy
import numpy as np
import networkx as nx
g = nx.barabasi_albert_graph(10000,seed=1)
def nth_moment_v2(g,n):
degree_np = np.array(list(dict(g.degree).values()))
return (sum(degree_np**n)/len(g))
次数:
st = time.time()
print(nth_moment(g,2))
print(time.time()-st)
st = time.time()
print(nth_moment_v2(g,2))
print(time.time()-st)
58.3626
0.017042160034179688
58.3626
0.005998849868774414
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。