我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python中networkx函数的具体使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python中networkx函数的具体使用

1. 介绍

1.1 前言

NetworkX是复杂网络研究领域中的常用Python包。

1.2 图的类型(Graph Types)

允许以可哈希的object作为节点,任何Python object作为边属性。

如何选择使用哪种图:

1

这里解释一下什么是平行边:连接一对顶点的两条边叫做平行边,即,无向图中,两个顶点间有多条边,他们叫做平行边,打个比方,北京和上海直接可以 是公路、铁路、飞机,那么他们互为平行边。

1.3 常用方法

创建一个空的图

1)无向图:G = nx.Graph()
2)有向图:DG = nx.DiGraph()

将有向图转换为无向图:G = nx.Graph(DG)

图是否有向:G.is_directed() 返回布尔值

添加节点
1)直接添加一个节点(任何object都可以作为节点,包括另一个图)G.add_node(1)、G.add_node(DG)
2)从任何容器加点:a list, dict, set or even the lines from a file or the nodes from another graph…;G.add_nodes_from() 或 nx.path_graph()

添加边
1)添加一条边 G.add_edge(u, v)
2)添加一个边的列表 G.add_edges_from([(1, 2), (1, 3)])
3)添加一个边的collection G.add_edges_from(H.edges)
4)如果添加的边的点不存在于图中,会自动添上相应节点而不报错

属性attribute
1)图的节点/边/图都可以在关联的attribute字典中以键值对key/value形式存储attribute(key一定要是可哈希的)
2)默认情况下属性字典是空的
3)可以通过add_edge() add_node() 方法或直接操作分别名为graph edges nodes的属性字典来进行操作

2. 代码示例

import networkx as nx
import numpy as np 

#定义图的节点和边 
nodes=['0','1','2','3','4','5','a','b','c'] 
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)] 

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

#定义一个无向图和有向图 
G1 = nx.Graph() 
G1.add_nodes_from(nodes) 
G1.add_weighted_edges_from(edges) 
 
G2 = nx.DiGraph() 
G2.add_nodes_from(nodes) 
G2.add_weighted_edges_from(edges) 
 
pos1=nx.circular_layout(G1) 
pos2=nx.circular_layout(G2) 
 
#画出无向图和有向图 
plt.subplot(121) 
nx.draw(G1,pos1, with_labels=True, font_weight='bold') 
plt.title('无向图',fontproperties=myfont) 
plt.axis('on') 
plt.xticks([]) 
plt.yticks([]) 

plt.subplot(122) 
nx.draw(G2,pos2, with_labels=True, font_weight='bold') 
plt.title('有向图',fontproperties=myfont) 
plt.axis('on') 
plt.xticks([]) 
plt.yticks([]) 

plt.show() 

 #控制numpy输出小数位数 
np.set_printoptions(precision=3)  
 
#邻接矩阵 
A = nx.adjacency_matrix(G1) 
print('邻接矩阵:\n',A.todense()) 
邻接矩阵: 
 [[0.  0.  0.  0.  5.  0.  0.  0.  6. ] 
 [0.  0.  0.  2.  0.  0.  0.  0.  0. ] 
 [0.  0.  0.  0.  0.  0.5 0.5 0.  0. ] 
 [0.  2.  0.  1.  1.  0.  0.  0.  0. ] 
 [5.  0.  0.  1.  0.  0.  0.  0.  7. ] 
 [0.  0.  0.5 0.  0.  0.  0.5 0.  0. ] 
 [0.  0.  0.5 0.  0.  0.5 0.  0.  0. ] 
 [0.  0.  0.  0.  0.  0.  0.  0.  0. ] 
 [6.  0.  0.  0.  7.  0.  0.  0.  0. ]] 

#关联矩阵 
I = nx.incidence_matrix(G1) 
print('\n关联矩阵:\n',I.todense()) 
关联矩阵: 
 [[1. 1. 0. 0. 0. 0. 0. 0. 0.] 
  [0. 0. 1. 0. 0. 0. 0. 0. 0.] 
 [0. 0. 0. 1. 1. 0. 0. 0. 0.] 
  [0. 0. 1. 0. 0. 1. 0. 0. 0.] 
  [0. 1. 0. 0. 0. 1. 0. 1. 0.] 
 [0. 0. 0. 1. 0. 0. 0. 0. 1.] 
 [0. 0. 0. 0. 1. 0. 0. 0. 1.] 
 [0. 0. 0. 0. 0. 0. 0. 0. 0.] 
 [1. 0. 0. 0. 0. 0. 0. 1. 0.]] 

#拉普拉斯矩阵 
L=nx.laplacian_matrix(G1) 
print('\n拉普拉斯矩阵:\n',L.todense()) 
拉普拉斯矩阵: 
  [[11.   0.   0.   0.  -5.   0.   0.   0.  -6. ] 
 [ 0.   2.   0.  -2.   0.   0.   0.   0.   0. ] 
 [ 0.   0.   1.   0.   0.  -0.5 -0.5  0.   0. ] 
 [ 0.  -2.   0.   3.  -1.   0.   0.   0.   0. ] 
 [-5.   0.   0.  -1.  13.   0.   0.   0.  -7. ] 
 [ 0.   0.  -0.5  0.   0.   1.  -0.5  0.   0. ] 
 [ 0.   0.  -0.5  0.   0.  -0.5  1.   0.   0. ] 
 [ 0.   0.   0.   0.   0.   0.   0.   0.   0. ] 
  [-6.   0.   0.   0.  -7.   0.   0.   0.  13. ]] 

#标准化的拉普拉斯矩阵 
NL=nx.normalized_laplacian_matrix(G1) 
print('标准化的拉普拉斯矩阵:\n',NL.todense()) 
标准化的拉普拉斯矩阵: 
  [[ 1.     0.     0.     0.    -0.418  0.     0.     0.    -0.502] 
  [ 0.     1.     0.    -0.707  0.     0.     0.     0.     0.   ] 
  [ 0.     0.     1.     0.     0.    -0.5   -0.5    0.     0.   ] 
  [ 0.    -0.707  0.     0.75  -0.139  0.     0.     0.     0.   ] 
  [-0.418  0.     0.    -0.139  1.     0.     0.     0.    -0.538] 
  [ 0.     0.    -0.5    0.     0.     1.    -0.5    0.     0.   ] 
  [ 0.     0.    -0.5    0.     0.    -0.5    1.     0.     0.   ] 
  [ 0.     0.     0.     0.     0.     0.     0.     0.     0.   ] 
  [-0.502  0.     0.     0.    -0.538  0.     0.     0.     1.   ]] 

#有向图拉普拉斯矩阵 
DL=nx.directed_laplacian_matrix(G2) 
print('\n有向拉普拉斯矩阵:\n',DL) 
有向拉普拉斯矩阵: 
  [[ 0.889 -0.117 -0.029 -0.087 -0.319 -0.029 -0.029 -0.129 -0.242] 
  [-0.117  0.889 -0.026 -0.278 -0.051 -0.026 -0.026 -0.114 -0.056] 
  [-0.029 -0.026  0.994 -0.012 -0.009 -0.481 -0.481 -0.025 -0.01 ] 
  [-0.087 -0.278 -0.012  0.757 -0.097 -0.012 -0.012 -0.052 -0.006] 
  [-0.319 -0.051 -0.009 -0.097  0.994 -0.009 -0.009 -0.041 -0.434] 
  [-0.029 -0.026 -0.481 -0.012 -0.009  0.994 -0.481 -0.025 -0.01 ] 
  [-0.029 -0.026 -0.481 -0.012 -0.009 -0.481  0.994 -0.025 -0.01 ] 
  [-0.129 -0.114 -0.025 -0.052 -0.041 -0.025 -0.025  0.889 -0.045] 
  [-0.242 -0.056 -0.01  -0.006 -0.434 -0.01  -0.01  -0.045  0.994]] 

#拉普拉斯算子的特征值 
LS=nx.laplacian_spectrum(G1) 
print('\n拉普拉斯算子的特征值:\n',LS) 
拉普拉斯算子的特征值: 
 [-1.436e-15  0.000e+00  4.610e-16  7.000e-01  1.500e+00  1.500e+00 
  4.576e+00  1.660e+01  2.013e+01] 

#邻接矩阵的特征值 
AS=nx.adjacency_spectrum(G1) 
print('邻接矩阵的特征值:\n',AS) 
邻接矩阵的特征值: 
  [12.068+0.000e+00j  2.588+0.000e+00j -7.219+0.000e+00j -4.925+0.000e+00j 
 -1.513+0.000e+00j  1.   +0.000e+00j -0.5  +2.393e-17j -0.5  -2.393e-17j0.  +0.000e+00j]

#无向图的代数连通性 
AC=nx.algebraic_connectivity(G1) 
print('无向图的代数连通性:\n',AC) 
无向图的代数连通性: 
  0.0 
  
#图的光谱排序 
SO=nx.spectral_ordering(G1) 
print('图的光谱排序:\n',SO) 
图的光谱排序: 
 ['4', '2', '1', '0', '5', 'b', 'c', 'a', '3'] 

到此这篇关于python中networkx函数的具体使用的文章就介绍到这了,更多相关python networkx使用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python中networkx函数的具体使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python中networkx函数的具体使用

本文主要介绍了python中networkx函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-14

Python property函数的具体使用

Python中的property函数允许创建只读或读写属性,调用方法来动态访问对象属性。使用方式为使用@property装饰器,并定义getter和setter方法。getter方法用于获取值,setter方法用于设置值。property函数提高了代码可读性,并支持对属性访问的控制和验证,但添加了额外代码行,且不支持标准Python操作符访问属性。
Python property函数的具体使用
2024-04-02

Python hasattr函数的具体使用

hasattr()函数用于检查对象是否具有特定属性,返回一个布尔值(True/False)。其语法为hasattr(object,name),其中object为要检查的对象,name为要检查的属性名称。hasattr()函数可用于避免属性错误,并检查动态属性。它还可用于检查内置类型和模块中的属性。
Python hasattr函数的具体使用
2024-04-02

Python内置函数 next的具体使用

Python 3中的File对象不支持next()方法。 Python 3有一个内置函数next(),它通过调用其next ()方法从迭代器中检索下一个项目。 如果给定了默认值,则在迭代器耗尽返回此默认值,否则会引发StopIteratio
2023-01-31

python内置函数anext的具体使用

本文主要介绍了python内置函数anext的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-18

C++中delete函数的具体使用

本文主要介绍了C++中delete函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-09

Pandas中describe()函数的具体使用

本文主要介绍了Pandas中describe()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-17

tensorflow中Dense函数的具体使用

本文主要介绍了tensorflow中Dense函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-02

pythonre.match函数的具体使用

本文主要介绍了pythonre.match函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-13

np.repeat()函数的具体使用

本文主要介绍了np.repeat()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-13

Pandasdiv()函数的具体使用

本文主要介绍了Pandasdiv()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-14

Pythonisalnum()函数的具体使用

目录1、包含字母和数字的情况2、汉字和其他语言的情况3、空字符串、制表符、特殊符号、标点符号isalnum() 可以判断字符串的字符是否全都是「字母」和「数字」。语法string.isalnum()返回值字符串中所有字符都是数字或字
2023-08-08

numpy.ndarray.flatten()函数的具体使用

本文主要介绍了numpy.ndarray.flatten()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-13

np.concatenate()函数的具体使用

本文主要介绍了np.concatenate()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-13

np.newaxis()函数的具体使用

本文主要介绍了np.newaxis()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-13

numpy.reshape()的函数的具体使用

本文主要介绍了numpy.reshape()的函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-10

Mysql CAST函数的具体使用

目录语法参数说明示例练习案例CAST函数用于将值从一种数据类型转换为表达式中指定的另一种数据类型语法CAST(value AS datatype)AS关键字用于分隔android两个参数,在AS之前的是要处理的数据,在AS之后的是要转
2022-08-12

C++ setw()函数的具体使用

本文主要介绍了C++ setw()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-09

MySQL ifnull()函数的具体使用

mysql IFNULL函数简介MySQL IFNULL函数是MySQL控制流函php数之一,它接受两个参数,如果不是NULL,则返回第一个参数。 否则,IFNULL函数返回第二个参数。两个参数可以是文字值或表达式。以下说明了IFNUL
2022-08-11

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录