首页 > 解决方案 > 从一批邻接矩阵生成图

问题描述

我正在尝试训练一个网络来为图生成邻接矩阵。在训练过程中,对于我使用的单个图

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)

标签: pythongraphnetworkx

解决方案


您可以添加一个mapovernx.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)]

您也可以在此处查看代码。

参考:


推荐阅读