nuan11111 2022-12-23 15:23 采纳率: 50%
浏览 128

networkx分析加权网络,邻居节点平均度计算

用networkx计算加权网络的节点度和邻居节点平均度的时候,节点度计算正确,邻居节点平均度不正确,已经验证过矩阵导入没错。
我计算的加权网络中,
邻居节点平均度average_neighbor_degree是根据二元网络计算的;
邻居节点加权平均度average_degree_connectivity并没有得到字典。

excel中是邻接矩阵

import networkx as nx
import matplotlib.pyplot as plt
import csv
import xlwt
import pandas as pd


df=pd.read_excel('D:\\Documents\\文档\\2009年计算\\2009.xlsx',index_col=0)
#df=df.fillna(0).astype(int)
matrix=df.values
print(matrix)
nodes=list(df.columns)
weight={}
G=nx.Graph()
for i in range(len(matrix)):
    for j in range(len(nodes)):
         if matrix[i,j]!=0:
                G.add_edge(nodes[i],nodes[j],weight=matrix[i,j])
                #weight.update({(nodes[i],nodes[j]):matrix[i,j]})


nx.draw_networkx(G, pos=nx.spring_layout(G), node_size=20, node_shape='o', width=1, style='solid', font_size=8)

plt.show()


# 计算度中心度
print("Degree centrality")
d = nx.degree(G,weight="weight")
print(d)
for v in G.nodes():
     print(v, d[v])

print("average_neighbor Streng")
c = nx.average_neighbor_degree(G,weight="weight")
print(c)
for v in G.nodes():
    print(v, c[v])

print("average_degree Connectivity")
e=nx.average_degree_connectivity(G,weight="weight")
for v in G.nodes():
    print(v,e[v])

  • 写回答

1条回答 默认 最新

  • ShowMeAI 2022-12-23 16:00
    关注

    望采纳

    可以使用 NetworkX 的 read_edgelist() 函数从 CSV 文件读取边列表,其中每行都包含起点、终点和边权。进而计算加权网络中节点度、邻居节点加权平均度和邻居节点加权平均连通性。

    import csv
    import networkx as nx
    
    # 加载数据
    G = nx.Graph()
    with open("data.csv", "r") as f:
        reader = csv.reader(f)
        next(reader)  # 跳过标题行
        for row in reader:
            G.add_edge(row[0], row[1], weight=float(row[2]))
    
    # 计算度中心度
    d = nx.degree(G, weight="weight")
    for v in G.nodes():
        print(f"Node {v}: degree = {d[v]}")
    
    # 计算邻居节点加权平均度
    c = nx.average_neighbor_degree(G, weight="weight")
    for v in G.nodes():
        print(f"Node {v}: average neighbor degree = {c[v]}")
    
    # 计算邻居节点加权平均连通性
    e = nx.average_degree_connectivity(G, weight="weight")
    for v in G.nodes():
        print(f"Node {v}: average degree connectivity = {e[v]}")
    
    评论

报告相同问题?

问题事件

  • 修改了问题 12月23日
  • 创建了问题 12月23日

悬赏问题

  • ¥30 comsol仿真等离激元
  • ¥15 静电纺丝煅烧后如何得到柔性纤维
  • ¥15 (标签-react native|关键词-镜像源)
  • ¥100 照片生成3D人脸视频
  • ¥15 伪装视频时长问题修改MP4的时长问题,
  • ¥15 JETSON NANO
  • ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理
  • ¥20 关于 openpyxl 处理excel文件地问题
  • ¥15 MS中不知道高分子的构型怎么构建模型
  • ¥60 QQOP数据,什么是op数据号,怎么提取op数据!能不能大量提取(语言-c语言)