其他
networkx,一个超强的 python 库
大家好,我是小寒。
今天给大家分享一个超强的 python 库,networkx
https://github.com/networkx/networkx
它提供了一个简单而灵活的API来构建图并执行各种与图相关的操作。
什么是图
相反,无向图没有方向,边可以以任何方向从一个节点到另一个节点。
最后,多重图是在相同的两个节点之间可以具有多条边的图。
初体验
库的安装
pip install networkx
安装完 NetworkX 后,你就可以开始在 Jupyter Notebook 中使用它。
示例
import random
import networkx as nx
G = nx.Graph()
G.add_node('1')
G.add_node('2')
G.add_edge('1','2')
nx.draw(G,with_labels=True)
例如,我们可以轻松找到两个给定节点之间的最短路径。
# Create a random graph of 100 nodes:
num_nodes = 100
G = nx.Graph()
G.add_nodes_from(range(num_nodes))
# Give each node an edge to two other nodes, randomly chosen
for i in range(num_nodes):
G.add_edge(i, random.randint(0, num_nodes-1))
G.add_edge(i, random.randint(0, num_nodes-1))
# We are looking for the shortest distance from node 0 to node 99.
# Paint node 0 red and node 99 green.
color_map = ["gray"] * num_nodes
color_map[0] = "red"
color_map[-1] = "green"
nx.draw(G, node_color=color_map, with_labels=True)
此代码示例创建了一个包含 100 个节点和节点之间的边的随机图。
最后,NetworkX 的 draw() 函数用于绘制具有指定颜色的图形。node_color 参数设置为 color_map 列表,它将每个节点映射到其相应的颜色。
接下来,我们计算红色节点和绿色节点之间的最短路径。
该函数将图以及起始节点和结束节点的 ID 作为输入。结果存储在变量 path 中,它形成两个节点之间最短路径的节点列表。
path=nx.shortest_path(G,source=0, target=99)
让我们将最短路径涂成红色,即最短路径上的所有边都应涂成红色,所有其他边涂成黑色。
edges_on_path = [(path[i], path[i+1]) for i in range(len(path)-1)]
edge_colors = []
for edge in G.edges:
if edge in edges_on_path \
or tuple(reversed(edge)) in edges_on_path:
edge_colors.append("red")
else:
edge_colors.append("black")
nx.draw_spring(G, node_color=color_map, edge_color=edge_colors, with_labels=True)
最短路径上的边存储在 edges_on_path 列表中。
最后
—
「进群方式:加我微信,备注 “python”」
往期回顾
Fashion-MNIST 服装图片分类-Pytorch实现
如果对本文有疑问可以加作者微信直接交流。进技术交流群的可以加微信拉你进群。