通过具有权重的 networkx 生成邻接矩阵

generate adjacency matrix via networkx that has weights

我正在使用下面的代码生成一些随机的欧几里德图。我希望邻接矩阵具有节点之间的距离,而不仅仅是连接的二进制表示。如何使邻接矩阵保持节点之间的实际 distances/weights?

g = nx.generators.random_geometric_graph(n, 10)
adj = nx.adjacency_matrix(g).todense()

嗯,邻接矩阵表示邻接,而不是距离。要获取距离,您可以获取节点的 pos 属性,然后正常进行:

g = nx.generators.random_geometric_graph(10, 0.1)
pos = np.array([g.nodes[node]['pos'] for node in g.nodes])
delta = pos[np.newaxis, :, :] - pos[:, np.newaxis, :]
distances = = np.sqrt(np.sum(delta**2, axis=-1))