Простой способ получить матрицу смежности - использовать 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.adjacency_matrix
:
m = nx.adjacency_matrix(g)
m.todense()
matrix([[0, 1, 0, 1, 0],
[0, 0, 1, 0, 1],
[0, 0, 0, 1, 0],
[0, 0, 0, 0, 1],
[1, 1, 1, 0, 0]], dtype=int64)
А для кадра данных с соответствующими узлами в качестве столбцов вы можете сделать:
pd.DataFrame(m.todense(), columns=nx.nodes(g))
A B C D E
0 0 1 0 1 0
1 0 0 1 0 1
2 0 0 0 1 0
3 0 0 0 0 1
4 1 1 1 0 0