介绍:

networkx是python的一个库,它为图的数据结构提供算法、生成器以及画图工具。近日在使用ryu进行最短路径获取,可以通过该库来简化工作量。该库采用函数方式进行调用相应的api,其参数类型通常为图对象。

函数API的调用,按照以下步骤来创建构建图:

1.networkx的加载

在python中调用networkx通常只需要将该库导入即可

import networkx as nx

2.图对象的创建

networkx提供了四种基本图对象:Graph,DiGraph,MultiGraph,MultiDiGraph。

使用如下调用方式,可以创建以上四种图对象的空图。

G=nx.Graph()
G=nx.DiGraph()
G=nx.MultiGraph()
G=nx.MultiDiGraph()

在 networkx中,图的各个节点允许以哈希表对象来表示,而对于图中边的各个参量,则可以通过与边相关联的方式来标识,一般而言,对于权重,用weight作为keyword,而对于其他的参数,使用者可以采用任何除weight以外的keyword来命名。

3.在2中,创建的只是一副空图,为了得到一个有节点、有边的图,一般采用下面这个函数:

G.add_edge(1,2) #default edge data=1
G.add_edge(1,2) #specify edge data=0.9

add_edge()函数,该函数在调用时需要传入两个参数u和v,以及多个可选参数

u和v即图中的两个节点,如果图中不存在节点,在调用时会自动将这两个节点添加入内,同时构建两个节点之间的连接关系,可选参数通常指这条边的权重等关系参量。需要注意的是,如果图中已经存在了这条边,重新进行添加时会对这条边进行跟新操作(也就是覆盖了原有的信息)。

对于该函数,除了上述的构建方式以外,还有以下几种方式来创建边:

G.add_edge(*e)             # single edge as tuple of two nodes
G.add_edge(1, 3, weight=7, capacity=15, length=342.7) #using many arguements to create edge
G.add_edges_from( [(1, 2)] ) # add edges from iterable container

  有时候,当采用默认方式创建边以后,我们可能还会往边里面添加边的相关参数,这时候,可以采用下面的方式来更新边的信息:

#For non-string attribute keys, use subscript notation.
G.add_edge(1, 2)
G[1][2].update({0: 5}) #更新边的信息
G.edges[1, 2].update({0: 5}) #更新边的信息
#上述两种更新方式,择一选取即可

  细心的朋友可能注意到我在写创建图的内容的时候,提到了add_edges_from()函数,该函数也是用来创建边的,该方式与add_edges()略有不同,比之add_edges()采用一个一个节点的方式进行创建,它来的更为便利。这个函数在调用时,需要一个节点元组作为参数以及多个可选参数作为边的信息。你可以这么传递:

默认创建节点之间的边:

G.add_edges_from([(u,v)])

也可以这么写,在创建的同时添加信息:

G.add_edges_from([(3, 4), (1, 4)], label='WN2898') 

  通过上述方式,就构建了一个3-4-1的图的连接,并给每条边打上了标签。

由此你就可以创建出自己的图模型了。

          

python-networkx学习(1)的更多相关文章

  1. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  2. 60分钟Python快速学习(给发哥一个交代)

    60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空 ...

  3. python爬虫学习(1) —— 从urllib说起

    0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...

  4. python爬虫学习 —— 总目录

    开篇 作为一个C党,接触python之后学习了爬虫. 和AC算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...

  5. Python正则表达式学习摘要及资料

    摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2 ...

  6. python 线程学习

    彩照 一.学习[1] # -*- coding: utf-8 -*- import time import thread def timer(no, interval): cnt = 0 while ...

  7. Openstack python api 学习文档 api创建虚拟机

    Openstack python api 学习文档 转载请注明http://www.cnblogs.com/juandx/p/4953191.html 因为需要学习使用api接口调用openstack ...

  8. !!对python列表学习整理列表及数组详细介绍

    1.Python的数组分三种类型:(详细见 http://blog.sina.com.cn/s/blog_6b783cbd0100q2ba.html) (1) list 普通的链表,初始化后可以通过特 ...

  9. Python实战:Python爬虫学习教程,获取电影排行榜

    Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...

  10. Python Tutorial 学习(八)--Errors and Exceptions

    Python Tutorial 学习(八)--Errors and Exceptions恢复 Errors and Exceptions 错误与异常 此前,我们还没有开始着眼于错误信息.不过如果你是一 ...

随机推荐

  1. JPG .vs. PNG

    A summary of comparison between JPEG and PNG JPEG Pros Smaller file size than PNG Widely suppported ...

  2. (6综合实验)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练

    从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述http://www.cnblogs.com/jsxyhelu/p/7907241.html2环境架设http://www.cn ...

  3. 深入理解JVM(六)——类加载器原理

    我们知道我们编写的java代码,会经过编译器编译成字节码文件(class文件),再把字节码文件装载到JVM中,映射到各个内存区域中,我们的程序就可以在内存中运行了.那么字节码文件是怎样装载到JVM中的 ...

  4. mvc接口、webapi、webservice 对比

    最近做了很多项目,也同时使用了mvc的接口,webapi的接口,以及webservice 的接口.先两两对比如下: mvc和webapi区别: 1.MVC是建站的一种框架,倾向于返回用户的页面请求:a ...

  5. UML 类图基础

    先留个坑, 后续再填 UML 类图中主要包括以下几种关系: 1. 泛化: 定义:继承关系,指定子类继承父类的所有特征与行为. 图形:三角形箭头,指向父类.         2. 实现 定义:类与接口的 ...

  6. js压缩文件读取处理

    1.引入必须依赖库jszip+jsutils=>>>建议使用以下版本,其他版本的jszip会报错 <!--zip文件读取--> <script src=" ...

  7. 模板层(template)

    模板: 什么是模板? html+模板语法 模板语法: 1 变量:{{}} 深度查询: 通过句点符号 . 过滤器 filter {{var|filter_name}} 2 标签: {% tag %} f ...

  8. [搬运] C# 这些年来受欢迎的特性

    原文地址:http://www.dotnetcurry.com/csharp/1411/csharp-favorite-features 在写这篇文章的时候,C# 已经有了 17 年的历史了,可以肯定 ...

  9. position:absolute 的深入探讨

    position:absolute 参考谁进行定位的问题.之前大家可能会认为如果absolute元素的父级(祖父)元素没有设置position属性的时候,该元素的position:absolute会参 ...

  10. CTF---Web入门第十一题 PHP大法

    PHP大法分值:20 来源: DUTCTF 难度:中 参与人数:8205人 Get Flag:2923人 答题人数:3042人 解题通过率:96% 注意备份文件 解题链接: http://ctf5.s ...