networkx关于Graph的各种操作

networkx关于Graph的各种操作

Graph DiGraph MultiGraph
https://blog.csdn.net/moodytong/article/details/7491520

import networkx as nx
G=nx.Graph()
G.add_edge(1,2,weight=1)
G.add_edge(1,3,weight=1)
for ii ,jj,kk in G.edges(data=“weight”,default=1):
… print(ii,jj,kk)
nx.adjacency_matrix()

学过线性代数的都了解矩阵,在矩阵上的文章可做的很多,什么特征矩阵,单位矩阵等.grpah存储可以使用矩阵,比如graph的邻接矩阵,权重矩阵等,
这节主要是在等到graph后,如何快速得到这些信息.详细官方文档在这里

  1. #定义图的节点和边

  2. nodes=[‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘a’,‘b’,‘c’]

  3. edges=[(‘0’,‘0’,1),(‘0’,‘1’,1),(‘0’,‘5’,1),(‘0’,‘5’,2),(‘1’,‘2’,3),(‘1’,‘4’,5),(‘2’,‘1’,7),(‘2’,‘4’,6),(‘a’,‘b’,0.5),(‘b’,‘c’,0.5),(‘c’,‘a’,0.5)]

  4. plt.subplots(1,2,figsize=(10,3))

  5. #定义一个无向图和有向图

  6. G1 = nx.Graph()

  7. G1.add_nodes_from(nodes)

  8. G1.add_weighted_edges_from(edges)

  9. G2 = nx.DiGraph()

  10. G2.add_nodes_from(nodes)

  11. G2.add_weighted_edges_from(edges)

  12. pos1=nx.circular_layout(G1)

  13. pos2=nx.circular_layout(G2)

  14. #画出无向图和有向图

  15. plt.subplot(121)

  16. nx.draw(G1,pos1, with_labels=True, font_weight=‘bold’)

  17. plt.title(‘无向图’,fontproperties=myfont)

  18. plt.axis(‘on’)

  19. plt.xticks([])

  20. plt.yticks([])

  21. plt.subplot(122)

  22. nx.draw(G2,pos2, with_labels=True, font_weight=‘bold’)

  23. plt.title(‘有向图’,fontproperties=myfont)

  24. plt.axis(‘on’)

  25. plt.xticks([])

  26. plt.yticks([])

  27. plt.show()

  28. #控制numpy输出小数位数

  29. import numpy as np

  30. np.set_printoptions(precision=3)

  31. #邻接矩阵

  32. A = nx.adjacency_matrix(G1)

  33. print(‘邻接矩阵:\n’,A.todense())

  34. #关联矩阵

  35. I = nx.incidence_matrix(G1)

  36. print(’\n关联矩阵:\n’,I.todense())

  37. #拉普拉斯矩阵

  38. L=nx.laplacian_matrix(G1)

  39. print(’\n拉普拉斯矩阵:\n’,L.todense())

  40. #标准化的拉普拉斯矩阵

  41. NL=nx.normalized_laplacian_matrix(G1)

  42. print(’\n标准化的拉普拉斯矩阵:\n’,NL.todense())

  43. #有向图拉普拉斯矩阵

  44. DL=nx.directed_laplacian_matrix(G2)

  45. print(’\n有向拉普拉斯矩阵:\n’,DL)

  46. #拉普拉斯算子的特征值

  47. LS=nx.laplacian_spectrum(G1)

  48. print(’\n拉普拉斯算子的特征值:\n’,LS)

  49. #邻接矩阵的特征值

  50. AS=nx.adjacency_spectrum(G1)

  51. print(’\n邻接矩阵的特征值:\n’,AS)

  52. #无向图的代数连通性

  53. AC=nx.algebraic_connectivity(G1)

  54. print(’\n无向图的代数连通性:\n’,AC)

  55. #图的光谱排序

  56. SO=nx.spectral_ordering(G1)

  57. print(’\n图的光谱排序:\n’,SO)

  58. #两个矩阵的解释看:https://blog.csdn.net/Hanging_Gardens/article/details/55670356

  59. 邻接矩阵:

  60. [[0. 0. 0. 0. 5. 0. 0. 0. 6. ]

  61. [0. 0. 0. 2. 0. 0. 0. 0. 0. ]

  62. [0. 0. 0. 0. 0. 0.5 0.5 0. 0. ]

  63. [0. 2. 0. 1. 1. 0. 0. 0. 0. ]

  64. [5. 0. 0. 1. 0. 0. 0. 0. 7. ]

  65. [0. 0. 0.5 0. 0. 0. 0.5 0. 0. ]

  66. [0. 0. 0.5 0. 0. 0.5 0. 0. 0. ]

  67. [0. 0. 0. 0. 0. 0. 0. 0. 0. ]

  68. [6. 0. 0. 0. 7. 0. 0. 0. 0. ]]

  69. 关联矩阵:

  70. [[1. 1. 0. 0. 0. 0. 0. 0. 0.]

  71. [0. 0. 1. 0. 0. 0. 0. 0. 0.]

  72. [0. 0. 0. 1. 1. 0. 0. 0. 0.]

  73. [0. 0. 1. 0. 0. 1. 0. 0. 0.]

  74. [0. 1. 0. 0. 0. 1. 0. 1. 0.]

  75. [0. 0. 0. 1. 0. 0. 0. 0. 1.]

  76. [0. 0. 0. 0. 1. 0. 0. 0. 1.]

  77. [0. 0. 0. 0. 0. 0. 0. 0. 0.]

  78. [1. 0. 0. 0. 0. 0. 0. 1. 0.]]

  79. 拉普拉斯矩阵:

  80. [[11. 0. 0. 0. -5. 0. 0. 0. -6. ]

  81. [ 0. 2. 0. -2. 0. 0. 0. 0. 0. ]

  82. [ 0. 0. 1. 0. 0. -0.5 -0.5 0. 0. ]

  83. [ 0. -2. 0. 3. -1. 0. 0. 0. 0. ]

  84. [-5. 0. 0. -1. 13. 0. 0. 0. -7. ]

  85. [ 0. 0. -0.5 0. 0. 1. -0.5 0. 0. ]

  86. [ 0. 0. -0.5 0. 0. -0.5 1. 0. 0. ]

  87. [ 0. 0. 0. 0. 0. 0. 0. 0. 0. ]

  88. [-6. 0. 0. 0. -7. 0. 0. 0. 13. ]]

  89. 标准化的拉普拉斯矩阵:

  90. [[ 1. 0. 0. 0. -0.418 0. 0. 0. -0.502]

  91. [ 0. 1. 0. -0.707 0. 0. 0. 0. 0. ]

  92. [ 0. 0. 1. 0. 0. -0.5 -0.5 0. 0. ]

  93. [ 0. -0.707 0. 0.75 -0.139 0. 0. 0. 0. ]

  94. [-0.418 0. 0. -0.139 1. 0. 0. 0. -0.538]

  95. [ 0. 0. -0.5 0. 0. 1. -0.5 0. 0. ]

  96. [ 0. 0. -0.5 0. 0. -0.5 1. 0. 0. ]

  97. [ 0. 0. 0. 0. 0. 0. 0. 0. 0. ]

  98. [-0.502 0. 0. 0. -0.538 0. 0. 0. 1. ]]

  99. 有向拉普拉斯矩阵:

  100. [[ 0.889 -0.117 -0.029 -0.087 -0.319 -0.029 -0.029 -0.129 -0.242]

  101. [-0.117 0.889 -0.026 -0.278 -0.051 -0.026 -0.026 -0.114 -0.056]

  102. [-0.029 -0.026 0.994 -0.012 -0.009 -0.481 -0.481 -0.025 -0.01 ]

  103. [-0.087 -0.278 -0.012 0.757 -0.097 -0.012 -0.012 -0.052 -0.006]

  104. [-0.319 -0.051 -0.009 -0.097 0.994 -0.009 -0.009 -0.041 -0.434]

  105. [-0.029 -0.026 -0.481 -0.012 -0.009 0.994 -0.481 -0.025 -0.01 ]

  106. [-0.029 -0.026 -0.481 -0.012 -0.009 -0.481 0.994 -0.025 -0.01 ]

  107. [-0.129 -0.114 -0.025 -0.052 -0.041 -0.025 -0.025 0.889 -0.045]

  108. [-0.242 -0.056 -0.01 -0.006 -0.434 -0.01 -0.01 -0.045 0.994]]

  109. 拉普拉斯算子的特征值:

  110. [-1.436e-15 0.000e+00 4.610e-16 7.000e-01 1.500e+00 1.500e+00

  111. 4.576e+00 1.660e+01 2.013e+01]

  112. 邻接矩阵的特征值:

  113. [12.068+0.000e+00j 2.588+0.000e+00j -7.219+0.000e+00j -4.925+0.000e+00j

  114. -1.513+0.000e+00j 1. +0.000e+00j -0.5 +2.393e-17j -0.5 -2.393e-17j

    1. +0.000e+00j]
  115. 无向图的代数连通性:

  116. 0.0

  117. 图的光谱排序:

  118. [‘4’, ‘2’, ‘1’, ‘0’, ‘5’, ‘b’, ‘c’, ‘a’, ‘3’]

你可能感兴趣的:(计算机基础)