一种通过numpy生成矩阵计算度中心性的方法

通过生成矩阵实现度的计算度中心性计算,注意:有向图的度中心性合并计算(入度+入度)/(节点总数-1)

关键是找好节点与位置的对应关系!同时考虑好矩阵一行的计算M[1]与一列M[:,1]的写法

import networkx as nx
import numpy as np
from  matplotlib import pyplot as plt
def nodedegree(G):   #计算有向图出度中心性及无向图的度中心性
    N = list(G.nodes())
    M = nx.to_numpy_matrix(G, nodelist=N)    #计算矩阵行:np.sum(M[1])与列:np.sum(M[:,1])
    d={}
    for i in N:
        t=N.index(i)   #返回节点i在列表中的位置,对应矩阵中元素
        d[i]=(np.sum(M[t]))/(len(N)-1)        #度中心性计算方法是度除节点数-1
    return d


if __name__ == "__main__":
    G=nx.DiGraph()
    with open('E:\\kt\\kkkk.txt') as f:  #数据集根据位置取
        # n, m = f.readline().split()
        for line in f:
            u, v = map(int, line.split())
            try:
                G[u][v]['weight'] += 1
            except:
                G.add_edge(u,v, weight=1)
    print(nodedegree(G))
    # pos = nx.spring_layout(G)  # 此语句可以不要,图形固定,否则会变化
    # nx.draw(G, pos, node_color='r', node_size=400, with_labels=True, alpha=0.9)
    # plt.show(G)

数据集样式
1 2
1 3
1 4
2 4
3 9
4 9
2 9
9 1

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值