Python networkx tutorial教程

595 阅读2分钟

官网地址:

networkx.org/documentati…

本文主要对官网进行翻译理解。

一、建图

1、建立一个没有边没有节点的空图

import networkx as nx
G = nx.Graph()

根据定义,图是节点(顶点)和确定的节点对(称为边、链接等)的集合。在NetworkX中,节点可以是任何可哈希对象,例如,一个文本字符串、一张图像、一个XML对象、另一个图形、一个定制的节点对象等。

二、节点(Nodes)

图G可以通过几种方式增长。NetworkX 包含许多图形生成器函数和工具,可以以多种格式读取和写入图形。首先,可以一次添加一个节点:

G.add_node(1)

或者从任何可迭代容器(如列表)中添加节点:

G.add_nodes_from([2, 3])

如果容器产生如下形式的二元组 (node, node_attribute_dict),也可以在添加节点属性的同时添加节点:

G.add_nodes_from([
    (4, {"color": "red"}),
    (5, {"color": "green"}),
])

一个图中的节点可以合并到另一个图中:

H = nx.path_graph(10)
G.add_nodes_from(H)

G现在包含了H的节点作为G的节点,相反,你可以使用图形H作为G的节点:

G.add_node(H)

三、边(Edges)

G也可以通过每次增加一条边来增加:

G.add_edge(1, 2)
e = (2, 3)
G.add_edge(*e)  # unpack edge tuple*

通过添加一系列边:

G.add_edges_from([(1, 2), (1, 3)])

或者通过添加任意一条边。ebunch是边元组的任何可迭代容器。一个边元组可以是一个包含节点的二元元组,也可以是一个包含两个节点的三元元组,后跟一个边属性字典,例如(2,3,{'weight': 3.1415})。

G.add_edges_from(H.edges)

在添加现有节点或边时没有问题。例如,在删除所有节点和边后:

G.clear()

我们添加了新的节点/边,NetworkX悄悄地忽略了所有已经存在的节点/边。

G.add_edges_from([(1, 2), (1, 3)])
G.add_node(1)
G.add_edge(1, 2)
G.add_node("spam")        # adds node "spam"
G.add_nodes_from("spam")  # adds 4 nodes: 's', 'p', 'a', 'm'
G.add_edge(3, 'm')

此时图G由8个节点和3条边组成,用下边的代码可以得出:

G.number_of_nodes()

G.number_of_edges()