从一批邻接矩阵生成图

时间:2019-12-11 16:11:46

标签: python graph networkx

我正在尝试训练一个网络,以生成图的邻接矩阵。在训练过程中,我只使用一张图

import networkx as nx
import numpy as np

adj = np.asarray([[0,1,0,0],[1,0,1,0],[0,0,0,1], [0,0,1,0]])   

G = nx.from_numpy_matrix(adj)

用于将邻接关系转换为图形。但是,在训练网络时,我需要使用一批矩阵来执行此操作,看来networkx无法做到这一点。是否有可以处理以下内容的软件包:

import networkx as nx
import numpy as np

adjs = []
adjs.append(np.asarray([[0,1,0,0],[1,0,1,0],[0,0,0,1], [0,0,1,0]]))
adjs.append(np.asarray([[0,1,0,1],[1,0,0,0],[0,0,0,1], [1,0,1,0]]))

adjs = np.asarray(adjs)    

G = nx.from_numpy_matrix(adjs)

1 个答案:

答案 0 :(得分:1)

您可以在map函数上添加nx.from_numpy_matrix,以将其应用于adjs列表中的所有邻接矩阵。像这样

import networkx as nx
import numpy as np

adjs = []
adjs.append(np.asarray([[0,1,0,0],[1,0,1,0],[0,0,0,1], [0,0,1,0]]))
adjs.append(np.asarray([[0,1,0,1],[1,0,0,0],[0,0,0,1], [1,0,1,0]]))

adjs = np.asarray(adjs)    

graph_list = list(map(lambda adj_matrix:nx.from_numpy_matrix(adj_matrix), adjs))

现在,graph_list只是NetworkX图的列表。

for graph in graph_list:
    print("Printing information for Graph at index:", idx)
    print(graph.nodes())
    print(graph.edges())

# Output:
# Printing information for Graph at index: 0
# [0, 1, 2, 3]
# [(0, 1), (1, 2), (2, 3)]
# Printing information for Graph at index: 1
# [0, 1, 2, 3]
# [(0, 1), (0, 3), (2, 3)]

您也可以查看代码here

参考: