python - 矩阵熊猫的邻接表
问题描述
我正在尝试通过一个从列表中构建邻接矩阵的玩具示例,但我已经无法弄清楚了。我正在考虑 .loc() 但我不确定如何正确索引。
{'nodes':['A', 'B', 'C', 'D', 'E'],
'edges':[('A', 'B'), ('A', 'D'), ('B', 'C'), ('B', 'E'), ('C', 'D'),
('D', 'E'), ('E', 'A'),('E', 'B'), ('E', 'C')]}
我已经开始构建矩阵:
n = len(graph['nodes'])
adj_matr = pd.DataFrame(0, columns = graph['nodes'], index = graph['edges'])
但现在我不知道如何填写。我认为有一个简单的衬里,也许有一个列表理解?
预期输出:
A B C D E
A 0 1 0 1 0
B 0 0 1 0 1
C 0 0 0 1 0
D 0 0 0 0 1
E 1 1 1 0 0
解决方案
获得邻接矩阵的一种简单方法是使用NetworkX
d = {'nodes':['A', 'B', 'C', 'D', 'E'],
'edges':[('A', 'B'), ('A', 'D'), ('B', 'C'), ('B', 'E'), ('C', 'D'),
('D', 'E'), ('E', 'A'),('E', 'B'), ('E', 'C')]}
从您的邻接矩阵看来,该图是有向的。您可以创建一个有向图,如下所示,并从字典中定义其节点和边:
import networkx as nx
g = nx.DiGraph()
g.add_nodes_from(d['nodes'])
g.add_edges_from(d['edges'])
然后您可以获得邻接矩阵作为数据框nx.to_pandas_adjacency
:
nx.to_pandas_adjacency(g)
A B C D E
A 0.0 1.0 0.0 1.0 0.0
B 0.0 0.0 1.0 0.0 1.0
C 0.0 0.0 0.0 1.0 0.0
D 0.0 0.0 0.0 0.0 1.0
E 1.0 1.0 1.0 0.0 0.0
推荐阅读
- wagtail - 格式化流场图像块
- javascript - 为什么我不能在 Material Design Lite 中使用自定义字体?
- javascript - javascript和c#之间的tcp通信
- dart - UI测试按钮是否启用
- c# - 重力是如何添加到角色控制中的?
- swift - Swift Tensorflow 中的#tfop 是什么,它在哪里定义?
- asp.net-mvc - VisualStudio ASP.net MVC - CS0103:当前上下文中不存在名称“模型”
- reactjs - 为什么 Relay Modern 发出新请求,而不是使用缓存
- laravel - cartalyst 扩展的路线仅在第一次测试后设置
- javascript - 任何人都知道如何自动选择一个选项
- Javascript HTML