Python Networkx基础知识及使用总结

CuterCorley 等级 785 0 0

一、图的基础知识

1.复杂网络(Complex Network)定义与特性  

  钱学森给出了复杂网络的一个较严格的定义:具有自组织、自相似、吸引子、小世界、无标度中部分或全部性质的网络称为复杂网络。

  复杂网络一般具有的特性:

  (1)小世界。大多数网络尽管规模很大但是任意两个节点间却又一条相当短的路径。

  (2)集群即集聚程度(Clustering coefficient)。也就是网络集团化的程度,这是一种网络的内聚倾向。联通集团概念反映的是一个大网络中各集聚的小网络分布的相关联系状况。例如朋友圈中的一个小团体与另一个小团体之间的相互关系。

  (3)幂律(Power law)的度分布概念。度的相关性反映顶点之间关系的联系紧密性。

2.网络结构的相关度量

  度(Degree)——连接在某个节点上的边的数量。度描述的是节点的连接情况。一个网络的度是它包含的所有节点的度的平均数。(计算方法:网络中边数量的2倍除以节点数)

有向图中顶点入度之和等于顶点出度之和。

  路径长度(Path length)——节点与节点之间的距离,即两节点间所需经过的最小边数。

  平均路径长度——网络中所有成对节点之间的路径总数除以网络中所有成对节点的数目(节点的对数),就是平均路路径长度。

  联通度(Connectivity)——图中的这样的k个节点,从图中去掉所有的这些节点以及它们关联的所有边后,所得到的图不再是连通图或是平凡图,称k为图的节点连通度。

  集聚系数(Clustering coefficient)——图中所有构成的三角形个数除以由节点构成三角形的最大可能数(最大可能数是n(n-1)(n-2)/321=n(n-1)(n-2)/6)。

3.Gephi中的统计

  平均度(degree)——计算每个节点的度,并统计相同度的节点数量。有向图的平均度:所有点的度数总和/节点数*2;无向图:所有点的度数总和/节点数。节点的度越高,连接它的点就越多,说明该点越关键。

  平均加权度(weighted degree)——权重是指,取得某个点的一条边,如果该边的源为该节点,则该边的权重为加权出度,反之为加权入度。加权度为加权出度和加权入度的总和。有向图的平均加权度:加权度总和/2*节点数;无向图的平均加权度:加权度总和/节点数。

  网络直径(graph distance)——网络中任意两结点间距离的最大值。

  图密度(graph density)——有向图:边数/(节点数节点数-节点数);无向图:边数2/(节点数节点数-节点数)。其中(节点数*节点数-节点数)即为n(n-1),也就是n个节点可能产生的最大边数(有向图,若是无向图则要除以2)。图密度就是用实际边数除以可能产生的最大边数,结果越大表示图中节点连接越紧密。

  模块化(modularity)——一种聚类方式。

二、Python中networkx模块的使用

1.建立图

import networkx as nx
G=nx.Graph()#创建空的简单图
G=nx.DiGraph()#创建空的简单有向图
G=nx.MultiGraph()#创建空的多图
G=nx.MultiDiGraph()#创建空的有向多图

2.加点、加边

G.add_node(1)#加1这个点
G.add_node(1,1)#用(1,1)这个坐标加点
G.add_nodes_from([2,3])#加列表中的点

G.add_edge(1,2)#加边,起点是1终点是2
G.add_weight_edge(1,2,3.0)#第三个是权值
G.add_edges_from(list)#添加列表中的边
G.add_weight_edges_from(list)

3.删除点和边

G.remove_node()
G.remove_nodes_from()
G.remove_edge()
G.remove_edges_from()
G.clear()

4.遍历点和边

G.add_nodes_from([1,2,3])
for n in G.nodes():
    print(n)
G.add_edges_from([(1,2),(1,3)])
for e in G.edges():
    print(e)
print(G.degree())

打印

1
2
3
(1, 2)
(1, 3)
[(1, 2), (2, 1), (3, 1)]#1这个点有两条边连着,2、3只有一条边连着

5.画网络图

from matplotlib import pyplot as plt
import networkx as nx
G=nx.Graph()
G.add_nodes_from([1,2,3])
G.add_edges_from([(1,2),(1,3)])
nx.draw_networkx(G)
plt.show()

结果为 Python Networkx基础知识及使用总结

三、networkx模块常用的属性和方法

1.图

degree(G[, nbunch, weight]):返回单个节点或nbunch节点的度数视图。 

degree_histogram(G):返回每个度值的频率列表。

density(G):返回图的密度。

info(G[, n]):打印图G或节点n的简短信息摘要。

create_empty_copy(G[, with_data]):返回图G删除所有的边的拷贝。

is_directed(G):如果图是有向的,返回true。

add_star(G_to_add_to, nodes_for_star, **attr):在图形G_to_add_to上添加一个星形。

add_path(G_to_add_to, nodes_for_path, **attr):在图G_to_add_to中添加一条路径。

add_cycle(G_to_add_to, nodes_for_cycle, **attr):向图形G_to_add_to添加一个循环。

2.节点

nodes(G):在图节点上返回一个迭代器。

number_of_nodes(G):返回图中节点的数量。

all_neighbors(graph, node):返回图中节点的所有邻居。

non_neighbors(graph, node):返回图中没有邻居的节点。

common_neighbors(G, u, v):返回图中两个节点的公共邻居。

3.边

edges(G[, nbunch]):返回与nbunch中的节点相关的边的视图。

number_of_edges(G):返回图中边的数目。

non_edges(graph):返回图中不存在的边。

本文原文首发来自博客专栏Python实战,由本人转发至https://www.helloworld.net/p/2rBF76hvgFAD,其他平台均属侵权,可点击https://blog.csdn.net/CUFEECR/article/details/103007712查看原文,也可点击https://blog.csdn.net/CUFEECR浏览更多优质原创内容。

收藏
评论区

相关推荐

Python的环境搭建和下载
Python是一个跨平台、可移植的编程语言,因此可在windows、Linux和Mac OS X系统中安装使用。 安装完成后,你会得到Python解释器环境,可以通过终端输入python命令查看本地是否已经按照python以及python版本。这里有一点需要注意的是,如果没有将python的安装目录添加到环境变量中,会报错(python不是内部命令或外部命
Python Networkx基础知识及使用总结
一、图的基础知识 1.复杂网络(Complex Network)定义与特性    钱学森给出了复杂网络的一个较严格的定义:具有自组织、自相似、吸引子、小世界、无标度中部分或全部性质的网络称为复杂网络。  复杂网络一般具有的特性:  (1)小世界。大多数网络尽管规模很大但是任意两个节点间却又一条相当短的路径。  (2)集群即集聚程度(Clusterin
Python初学者必备书籍《Python入门经典》高清PDF版|百度网盘免费下载|Python初学者,自学Python必读
提取码:1028以及前文提到的学习路线图内容简介Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python可以用于很多的领域,从科学计算到游戏开发。《Python入门经典》是面向Python初学者的学习指南,详细介绍了Python编程基础,以及一些高级概念,如面向对象编程。全书分为24章。第1章介绍了Python的背景和安装方法。第2章
Android源代码下载编译
参考:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ Ubuntu 16.04 编译Android 8 安装依赖: sudo apt-get install openjdk-8-jdk git ccache automake lzop bison gperf build-essential zip
Centos7.3 编译安装GDAL以及Python的GDAL包
参考: https://cryolite.iteye.com/blog/176382 https://blog.csdn.net/a13326021319/article/details/78250508 https://stackoverflow.com/questions/17526517/installing-gdal-python-bindin
FreeBSD python安装MySQL
fetch https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.4.zip unzip MySQL-python-1.2.4.zip cd MySQL-python-1.2.4 python setup.py install ln -s /usr/loca
Hadoop streaming使用自定义python版本和第三方库
在使用Hadoop的过程中,遇到了自带python版本比较老的问题. 下面以python3.7为例,演示如何在hadoop上使用自定义的python版本以及第三方库. 1.在https://www.python.org下载Python-3.7.2.gz包 2.在linux环境下: tar -xvf Pthon-3.7.2 #解压文件
Python 3 教程
Python 3 教程 =========== ![python3](https://www.runoob.com/wp-content/uploads/2014/05/python3.png) Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,
Python 修改pip源
接触python多半年光景了,多数时间都是在公司看看书,最近终于有空在家学学python,写点代码。 可是涉及到python,就要说到python的模块了,python不管从代码风格还是涉及面上,都辣么辣么的惊艳。 好吧,谈及下载python第三方模块,势必谈及pip,默认的pip源下载速度实在是不给力啊不给力。所以修改pip源吧。 特别注意了
Python3 基本语法学习
1、查看Python版本及打印“Hellow World!”: ![](https://oscimg.oschina.net/oscnet/a61bad2f19989010fb3b0138321e93a4e49.png) 需要注意的是:在打印“Hello World”之前一定要先执行 python,否则会报无法 “无法初始化设备 PRN”,如图: ![
Python——graphviz及pydotplus安装步骤
**Python——graphviz及pydotplus安装步骤** **一、安装Graphviz** 网站:http://www.graphviz.org/download/ 下载msi文件 ![](https://oscimg.oschina.net/oscnet/3778f288c099c51f882b308e7386cec99dd.png)
Python中的参数传递与解析
Python传递命令行参数 ============= Python的命令行参数传递和C语言类似,都会把命令行参数保存到argv的变量中。对于python而言,argv是sys模块中定义的一个list。与C语言不同的是,python中并没有定义argc,要获得参数的个数,需要使用len(sys.argv) 当用户使用'python -c "command
Python常用的标准库以及第三方库有哪些?
[Python常用的标准库以及第三方库有哪些?](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fwww.cnblogs.com%2Fjiangchunsheng%2Fp%2F9275881.html) ============================================
Python源码在Win下和Linux下的编译,C++调用Python库绘制等高线
### 目录 前言 Python源码以及VS2017的准备 Python源码 VS2017 Windows下编译Python源码 编译命令 编译步骤 编译后的配置 添加注册表 Win10中编译Python源码小结 Windows中C++调用Python代码绘制等高线图 CMakeLists.txt文件如下: Python代码如下: CPP文件:
Python进阶丨如何创建你的第一个Python元类?
> **摘要:**通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类。 Python元类设置类的行为和规则。元类有助于修改类的实例,并且相当复杂,是Python编程的高级功能之一。通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类。本文介绍以下概念: * * 什么是Python元类?