python - 从一批邻接矩阵生成图
问题描述
我正在尝试训练一个网络来为图生成邻接矩阵。在训练过程中,对于我使用的单个图
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)
解决方案
您可以添加一个map
overnx.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)]
您也可以在此处查看代码。
参考:
推荐阅读
- javascript - 在 Materialise css v1.0 上显示自动完成芯片的图像?
- django-rest-framework - ios上大图出现Flutter SocketException问题
- java - DynamoDB put Item 未使用 MockiTo 和 PowerMock 进行模拟
- node.js - MongoDB、Mongoose 和 Apollo GraphQL 在文档中定义 _id 类型
- java - 将子类中的对象放入超类类型的数组后如何调用子类方法?
- python - 基于类返回一个numpy数组的分布样本
- php - 在递增的数字上添加静态前缀
- syntax - Perl6:用俚语添加印记
- python - 检测列表中的相同值
- android - 如何使用适用于 Android 的 Google Maps API 在 2 个标记之间绘制路线?