Python Networkx基础知识及使用总结

CuterCorley 等级 457 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不是内部命令或外部命
15. Python 程序运行速度如何提高十倍?第一遍滚雪球学 Python 收工
本篇文章将给大家介绍 Python 多线程与多进程相关知识,学习完该知识点之后,你的 Python 程序将进入另一个高峰。 <center<font colorred缓解一下视疲劳</font</center 15. Python 程序运行速度如何提高十倍?第一遍滚雪球学 Python 收工(https://imghelloworld.oss
原来Python绘图也可以这么漂亮,这次真的是学习到了!
(https://imghelloworld.osscnbeijing.aliyuncs.com/8830803f033eeed85783e9058cf08968.png) 作者:朱小五 来源:快学Python 👆人生苦短,快学Python! 最近看了一篇文章《一个牛逼的Python 可视化库:PyG2Plot》,可惜只是简单介
被“词云”包围的冰冰会更好看吗?安排
(https://imghelloworld.osscnbeijing.aliyuncs.com/b299933deefc692934e8cc6141ab3894.png) 大家好,我是小五🐶 昨天「凹凸数据」发了一篇张同学投稿的文章《用Python爬取王冰冰vlog弹幕并制作词云(https://mp.weixin.qq.com/
Python matplotlab库使用方法及注意事项
1.Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法 python import matplotlib.pyplot as plt t arange(4pi, 4pi, 0.01) y sin(t)/t plt.plot(t, y) plt.title('www.jb51.net test') plt.xlabe
Python Sanic 高并发服务开发指南
技术基础 AsyncIO Python 3.4 开始引入 AsyncIO(https://docs.python.org/3/library/asyncio.html) 模块,使得 Python 也支持异步 IO。3.5 版本里添加了 async/await 关键字,使得异步 IO 代码编写更加方便。3.6 和 3.7 版本继续进行了完善
我的python总结
建议刚开始学习直接使用ANACONDAhttps://www.anaconda.com/download/配置python环境变量https://docs.python.org/3.6/using/cmdline.htmlenvvarPYTHONMALLOCPython PEP8导包顺序1. Python标准
tornado入门笔记
官方文档https://www.tornadoweb.org/en/stable/ 简单使用 /usr/bin/env python coding: utf8 Author: Wjyimport tornado.ioloop 启动import tornado.web 请求对象import tornado.tem
Python Networkx基础知识及使用总结
一、图的基础知识 1.复杂网络(Complex Network)定义与特性    钱学森给出了复杂网络的一个较严格的定义:具有自组织、自相似、吸引子、小世界、无标度中部分或全部性质的网络称为复杂网络。  复杂网络一般具有的特性:  (1)小世界。大多数网络尽管规模很大但是任意两个节点间却又一条相当短的路径。  (2)集群即集聚程度(Clusterin
Python初学者必备书籍《Python入门经典》高清PDF版|百度网盘免费下载|Python初学者,自学Python必读
提取码:1028以及前文提到的学习路线图内容简介Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python可以用于很多的领域,从科学计算到游戏开发。《Python入门经典》是面向Python初学者的学习指南,详细介绍了Python编程基础,以及一些高级概念,如面向对象编程。全书分为24章。第1章介绍了Python的背景和安装方法。第2章
Python小白零基础入门 —— 变量及简单的数据类型
最近想着出一个Python小白零基础入门系列的文章,希望能对入门的小伙伴有所帮助,内容会囊括简单的数据类型、列表、字典、循环以及函数的定义,对于一些概念会以图解的方式进行讲解。今天这篇文章就介绍一下Python中的变量以及简单的数据类型,文末还列了一些练手的题目,大家可以边学边练!一、变量1、变量是什么在Python中,变量是用来 储存数据 的,更直白点,变
我惊了,python一行代码玩游戏!!!!
给IT入门加星标,提升编程技能freepythongames,一行代码就能进入使用Python开发的小游戏快乐玩耍!安装pip install freegamesPython包括随您的安装一起分发的大量标准库。标准库有一个称为Turtle的模块,这是一种向普通人介绍python编程的流行方法。今天介绍的所有游戏都是使用Python及其Turtle模块实现的。
10行Python代码自动清理电脑内重复文件,解放双手!
](https://mp.weixin.qq.com/mp/appmsgalbum?actiongetalbum&albumid1337012041701326848&bizMzI1MTUyMjc1Mgwechatredirect) 前言 大家好,又到了Python办公自动化系列。今天分享一个系统层面的自动化案例:「给定一个文件夹,使用Python检查
初窥 Python 的 import 机制
本文适合有 Python 基础的小伙伴进阶学习。 作者:pwwang一、前言本文基于开源项目: https://github.com/pwwang/pythonimportsystem补充扩展讲解,希望能够让读者一文搞懂 Python 的 import 机制。 1.1 什么是 import 机制?通常来讲,在一段 Python 代码中去执行引用另一个模块中
建议收藏,22个Python迷你项目(附源码)
在使用Python的过程中,我最喜欢的就是Python的各种第三方库,能够完成很多操作。 下面就给大家介绍22个通过Python构建的项目,以此来学习Python编程。 大家也可根据项目的目的及提示,自己构建解决方法,提高编程水平。 ① 骰子模拟器 目的:创建一个程序来模拟掷骰子。 提示:当用户询问时,使用random模块生成一个1到6之间