当前位置: 代码迷 >> 综合 >> 小世界网络邻接矩阵生成——python
  详细解决方案

小世界网络邻接矩阵生成——python

热度:48   发布时间:2024-03-10 01:33:01.0

小世界网络邻接矩阵生成——python

  • 网络生成方法

    python生成小世界网络最便捷的方式是导入networkx库,使用random_graphs.watts_strogatz_graph(n, k, p)方法生成含n个节点、每个节点有k个邻居、以概率p随机化重连边的小世界网络。

  • 矩阵输出方法

    画图和矩阵转换功能的实现,需要导入numpymatplotlib。pip过程中有两个小技巧:
    加-m避免系统错误:
    python -m pip install matplotlib
    使用清华镜像提高包下载速度:
    pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

  • 完整代码及注释

    import networkx as nx 
    import matplotlib.pyplot as plt 
    import numpy as np #WS小世界网络 #生成500个节点,每个节点有10个邻居,随机化重连的概率为0.5 
    ws = nx.watts_strogatz_graph(500, 10, 0.5)  #作图 
    ps = nx.shell_layout(ws) 
    plt.subplot(132) 
    plt.title('WS') 
    nx.draw(ws, ps, with_labels=True, node_color='b') 
    plt.show()  #加 np.inf 可以保证完整输出内容 
    np.set_printoptions(threshold=np.inf) #转邻接矩阵 
    a = nx.to_numpy_matrix(ws) 
    print(a)  #输出到txt文档 
    #data/task.txt:文件路径以及TXT文本名 
    #self.task: 要保存的数组名 
    #fmt="%d": 指定保存的文件格式,这里为十进制 
    #delimiter=" " 分隔符,这里以tab的形式隔开 
    np.savetxt('ws500.txt', a, fmt="%d", delimiter=" ")