最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用python中的networkx來生成一個圖

 更新時間:2022年12月16日 10:53:26   作者:wh柒八九  
這篇文章主要介紹了如何使用python中的networkx來生成一個圖,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

python networkx來生成一個圖

使用python提供的第三方的庫networkx,networkx是專門用來生成圖論和網絡科學里面各種圖及其各種計算函數的。

(a).如果已知一個圖的圖形,如何將其生成對應的鄰接矩陣,這個在networkx里面提供了函數nx.to_numpy_matrix(G)來完成

(b).如果已知一個圖的鄰接矩陣,如何將其轉化成對應的圖形

代碼如下:

# -*- coding: utf-8 -*-
"""
Created on Sun Jun 16 20:13:42 2019

@author: Administrator
"""

"""

這個函數的作用是將一個矩陣給轉換成一個圖,
矩陣以多維列表的形式存在,即列表的列表
此處的轉換是針對無向圖

根據鄰接矩陣得到圖之后,我們就可以調用networkx
里面的各種函數來分析圖的性質,比如度分布,
平均路徑程度,聚類系數等一系列圖的拓撲性質

"""

import networkx as nx


def matrix_to_graph():

  G = nx.Graph()
  
  #matrix為鄰接矩陣,以多維列表的形式存在
  matrix = [[0, 1, 1],[1,0,1],[1,1,0]]
  
  nodes = range(len(matrix))
  G.add_nodes_from(nodes)
 
  for i in range(len(matrix)):
    for j in range(len(matrix)):
      if(matrix[i][j] == 1):
		G.add_edge(i, j)
        
  position = nx.circular_layout(G)
  nx.draw_networkx_nodes(G,position, nodelist=nodes, node_color="r")
  nx.draw_networkx_edges(G,position)
  nx.draw_networkx_labels(G,position)
  print(nx.to_numpy_matrix(G))

matrix_to_graph()

運行結果如下:

networkx隨機圖生成

導入包

import networkx as nx ? #導入networkx包
import random?? ??? ??? ?#導入random包
import matplotlib.pyplot as plt #導入畫圖工具包

新建圖

G = nx.Graph()?? ??? ??? ?#建立無向圖
H = nx.path_graph(100)?? ?#添加節(jié)點
G.add_nodes_from(H)?? ??? ?#添加節(jié)點

隨機概率添加邊的函數

def rand_edge(vi,vj,p=0.2):?? ??? ?#默認概率p=0.1
? ? probability =random.random()#生成隨機小數
? ? if(probability<p):?? ??? ??? ?#如果小于p
? ? ? ? G.add_edge(vi,vj) ??? ??? ?#連接vi和vj節(jié)點

添加邊

i=0
while (i<100):
? ? j=0
? ? while(j<i):
? ? ? ? ? ? rand_edge(i,j)?? ??? ?#調用rand_edge()
? ? ? ? ? ? j +=1
? ? i +=1

matplotlib畫圖

隨機圖

連通子圖

number_components = nx.number_connected_components(G)?
largest_components = max(nx.connected_components(G), key=len)
print("最大連通子圖:" + str(largest_components))
print("最大連通子圖長度:"+ str(len(largest_components)))
print("連通子圖個數: "+str(nx.number_connected_components(G)))

節(jié)點的度

nx.degree(G)
DVweight = G.degree()
degree_sum = sum(span for n, span in DVweight) ?? ??? ?#各節(jié)點度數之和
degree_max = max(span for n, span in DVweight)?? ??? ?#節(jié)點最大度數

代碼 

import networkx as nx     #導入networkx包
import random			  #導入random包
import matplotlib.pyplot as plt

G = nx.Graph()
H = nx.path_graph(100)
G.add_nodes_from(H)

def rand_edge(vi,vj,p=0.2):
    probability =random.random()
    if(probability<p):
        G.add_edge(vi,vj)   
i=0
while (i<100):
    j=0
    while(j<i):
            rand_edge(i,j)
            j +=1
    i +=1

number_components = nx.number_connected_components(G) 
largest_components = max(nx.connected_components(G), key=len)
nx.degree(G)
DVweight = G.degree()
degree_sum = sum(span for n, span in DVweight) 		#各節(jié)點度數之和
degree_max = max(span for n, span in DVweight)		#節(jié)點最大度數

print("度數之和: " + str(degree_sum))
print("節(jié)點最大度數:" + str(degree_max))
print("最大連通子圖:" + str(largest_components))
print("最大連通子圖長度:"+ str(len(largest_components)))
print("連通子圖個數: "+str(nx.number_connected_components(G)))
nx.draw_networkx(G, with_labels=True)
plt.show()

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python與Appium實現(xiàn)手機APP自動化測試的示例代碼

    Python與Appium實現(xiàn)手機APP自動化測試的示例代碼

    本文主要介紹了Python與Appium實現(xiàn)手機APP自動化測試的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Python importlib模塊重載使用方法詳解

    Python importlib模塊重載使用方法詳解

    這篇文章主要介紹了Python importlib模塊重載使用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • 編寫Python腳本把sqlAlchemy對象轉換成dict的教程

    編寫Python腳本把sqlAlchemy對象轉換成dict的教程

    這篇文章主要介紹了編寫Python腳本把sqlAlchemy對象轉換成dict的教程,主要是基于Python的model類構建一個轉換的方法,需要的朋友可以參考下
    2015-05-05
  • Python生成隨機數字和字符詳情

    Python生成隨機數字和字符詳情

    這篇文章主要介紹了Python生成隨機數字和字符詳情,random是python自帶庫,使用前導入import?random即可,更多相關內容需要的朋友可以參考一下
    2022-07-07
  • Jupyter安裝拓展nbextensions及解決官網下載慢的問題

    Jupyter安裝拓展nbextensions及解決官網下載慢的問題

    這篇文章主要介紹了Jupyter安裝拓展nbextensions及解決官網下載慢的問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • python中pandas nlargest()的詳細用法小結

    python中pandas nlargest()的詳細用法小結

    df.nlargest()是一個DataFrame的方法,用于返回DataFrame中最大的n個值所在的行,通過調用nlargest()方法,我們返回了分數最高的三個行,并按照降序排列,本文結合實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2023-10-10
  • python中CURL 和python requests的相互轉換實現(xiàn)

    python中CURL 和python requests的相互轉換實現(xiàn)

    本文主要介紹了python中CURL 和python requests的相互轉換實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Python按照映射關系批量重命名文件

    Python按照映射關系批量重命名文件

    這篇文章主要為大家詳細介紹了Python如何按照映射關系批量重命名文件功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-03-03
  • python 實現(xiàn)調用子文件下的模塊方法

    python 實現(xiàn)調用子文件下的模塊方法

    今天小編就為大家分享一篇python 實現(xiàn)調用子文件下的模塊方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • keras的ImageDataGenerator和flow()的用法說明

    keras的ImageDataGenerator和flow()的用法說明

    這篇文章主要介紹了keras的ImageDataGenerator和flow()的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07

最新評論

获嘉县| 吉隆县| 武陟县| 吉隆县| 常宁市| 黔西| 布拖县| 南昌市| 遂宁市| 遂昌县| 长葛市| 湘乡市| 罗甸县| 旬邑县| 云林县| 黄梅县| 临城县| 原阳县| 新干县| 分宜县| 宽甸| 江永县| 定结县| 玛曲县| 右玉县| 阳高县| 米泉市| 陈巴尔虎旗| 绥芬河市| 红河县| 博爱县| 杭锦后旗| 新竹市| 晋中市| 平远县| 和政县| 两当县| 浦城县| 延安市| 龙南县| 五莲县|