小世界网络邻接矩阵生成——python
-
网络生成方法
python生成小世界网络最便捷的方式是导入networkx库,使用random_graphs.watts_strogatz_graph(n, k, p)方法生成含n个节点、每个节点有k个邻居、以概率p随机化重连边的小世界网络。
-
矩阵输出方法
画图和矩阵转换功能的实现,需要导入numpy和matplotlib。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=" ")