欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何使用python中的networkx來生成一個(gè)圖

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

python networkx來生成一個(gè)圖

使用python提供的第三方的庫networkx,networkx是專門用來生成圖論和網(wǎng)絡(luò)科學(xué)里面各種圖及其各種計(jì)算函數(shù)的。

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

(b).如果已知一個(gè)圖的鄰接矩陣,如何將其轉(zhuǎn)化成對(duì)應(yīng)的圖形

代碼如下:

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

@author: Administrator
"""

"""

這個(gè)函數(shù)的作用是將一個(gè)矩陣給轉(zhuǎn)換成一個(gè)圖,
矩陣以多維列表的形式存在,即列表的列表
此處的轉(zhuǎn)換是針對(duì)無向圖

根據(jù)鄰接矩陣得到圖之后,我們就可以調(diào)用networkx
里面的各種函數(shù)來分析圖的性質(zhì),比如度分布,
平均路徑程度,聚類系數(shù)等一系列圖的拓?fù)湫再|(zhì)

"""

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()

運(yùn)行結(jié)果如下:

networkx隨機(jī)圖生成

導(dǎo)入包

import networkx as nx ? #導(dǎo)入networkx包
import random?? ??? ??? ?#導(dǎo)入random包
import matplotlib.pyplot as plt #導(dǎo)入畫圖工具包

新建圖

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

隨機(jī)概率添加邊的函數(shù)

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

添加邊

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

matplotlib畫圖

隨機(jī)圖

連通子圖

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

節(jié)點(diǎn)的度

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

代碼 

import networkx as nx     #導(dǎo)入networkx包
import random			  #導(dǎo)入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é)點(diǎn)度數(shù)之和
degree_max = max(span for n, span in DVweight)		#節(jié)點(diǎn)最大度數(shù)

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

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • pandas的apply函數(shù)用法詳解

    pandas的apply函數(shù)用法詳解

    本文主要介紹了pandas的apply函數(shù)用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Python configparser模塊配置文件解析與應(yīng)用探究

    Python configparser模塊配置文件解析與應(yīng)用探究

    在Python中,configparser模塊是用于處理配置文件的重要工具,本文將全面探討configparser模塊的使用方法,包括讀取、修改、寫入配置文件,以及如何在實(shí)際項(xiàng)目中應(yīng)用該模塊,結(jié)合豐富的示例代碼,將深入剖析該模塊的功能和靈活性
    2024-01-01
  • python保存字符串到文件的方法

    python保存字符串到文件的方法

    這篇文章主要介紹了python保存字符串到文件的方法,實(shí)例分析了Python文件與字符串操作的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • Python異步在非阻塞子進(jìn)程中運(yùn)行命令詳解

    Python異步在非阻塞子進(jìn)程中運(yùn)行命令詳解

    這篇文章主要為大家介紹了Python異步在非阻塞子進(jìn)程中運(yùn)行命令詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 中秋節(jié)老家要貼對(duì)聯(lián)之python無線對(duì)聯(lián)生成器

    中秋節(jié)老家要貼對(duì)聯(lián)之python無線對(duì)聯(lián)生成器

    適逢中秋老家居然有在中秋貼對(duì)聯(lián)的習(xí)俗,于是自己開機(jī)立馬寫了一個(gè)對(duì)聯(lián)生成器,文中給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有參考價(jià)值
    2021-09-09
  • 詳解Python中的枚舉類型

    詳解Python中的枚舉類型

    枚舉(Enum)是一種數(shù)據(jù)類型,是綁定到唯一值的符號(hào)表示。。本文就來和大家聊聊Python中的枚舉類型,為什么需要枚舉類型,及如何使用
    2022-08-08
  • Python實(shí)現(xiàn)網(wǎng)絡(luò)端口轉(zhuǎn)發(fā)和重定向的方法

    Python實(shí)現(xiàn)網(wǎng)絡(luò)端口轉(zhuǎn)發(fā)和重定向的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)網(wǎng)絡(luò)端口轉(zhuǎn)發(fā)和重定向的方法,結(jié)合實(shí)例形式分析了Python基于threading和socket模塊實(shí)現(xiàn)端口轉(zhuǎn)發(fā)與重定向的具體操作技巧,需要的朋友可以參考下
    2016-09-09
  • Python中使用ElementTree解析XML示例

    Python中使用ElementTree解析XML示例

    這篇文章主要介紹了Python中使用ElementTree解析XML示例,本文同時(shí)講解了XML基本概念介紹、XML幾種解析方法和ElementTree解析實(shí)例,需要的朋友可以參考下
    2015-06-06
  • 使用PYTHON接收多播數(shù)據(jù)的代碼

    使用PYTHON接收多播數(shù)據(jù)的代碼

    一個(gè)PYTHON腳本,能夠在LINUX上發(fā)送多播數(shù)據(jù)。其實(shí)編制起來也不算太麻煩。具體代碼如下
    2012-03-03
  • python抽取指定url頁面的title方法

    python抽取指定url頁面的title方法

    今天小編就為大家分享一篇python抽取指定url頁面的title方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05

最新評(píng)論