Python NetworkX使用1——基础
一. 创建图
import networkx as nx
G = nx.Graph()
二. 基本操作
1. Node
G.add_node(1) # 添加点1
G.add_nodes_from([2,3]) # 通过列表添加点2和3
G.number_of_nodes() # 查看有多少点
list(G.nodes()) # 列出点
list(G.adj[1]) # 列出点1的邻居
2. Edge
G.add_dege(2,3) # 在点2和3之间添加一条边
e = (2, 3)
G.add_edge(*e) # 通过元组的方式添加边
G.add_edges_from([(1, 2), (1, 3)]) # 通过列表的方式添加边
G.number_of_edges() # 查看有多少条边
list(G.edges()) # 列出边 或者使用 list(G.neighbors())
3. Delete
G.clear() # 将图G删除
G.remove_node(2) # 将点2删除
G.remove_nodes_from([1, 3]) # 通过列表删除点
G.remove_edge(1, 3) # 删除1和3之间的边
4. Degree
G.degree[1] # 查看点1的度数
三. 增添属性
1. 简单的属性添加
G.add_edge(1, 3)
G[1][3]['color'] = "blue"
G.edges[1, 2]['color'] = "red"
G.add_weighted_edges_from([(1, 2, 0.125), (1, 3, 0.75)] # 添加带权重的边
2. 权重及遍历
可以使用`G.adjacency()`和`G.adj.items()`进行节点的快速遍历
FG = nx.Graph
FG.add_weighted_edges_from([(1, 2, 0.125), (1, 3, 0.75), (2, 4, 1.2), (3, 4,0.375)])
for n, nbrs in FG.adj.items():
for nbr, eattr in nbrs.items():
wt = eattr['weight']
if wt < 0.5: print('(%d, %d, %.3f)' % (n, nbr, wt))
"""
(1, 2, 0.125)
(2, 1, 0.125)
(3, 4, 0.375)
(4, 3, 0.375)
"""
# 另一种快速遍历边属性的方法
for (u, v, wt) in FG.edges.data('weight'):
if wt < 0.5: print('(%d, %d, %.3f)'%(u, v, wt))
"""
(1, 2, 0.125)
(3, 4, 0.375)
"""