首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从networkx.lattice.grid_2d_graph得到邻接矩阵和图

从networkx.lattice.grid_2d_graph得到邻接矩阵和图
EN

Stack Overflow用户
提问于 2019-01-22 08:59:40
回答 1查看 697关注 0票数 0

我必须创建一个维度为mxn的格子图。

在networkx中,我将执行以下操作:

代码语言:javascript
复制
N = 5
M = 4 
G = nx.generators.lattice.grid_2d_graph(N,M, periodic=True)

我希望结果是一个networkx.graph对象。

问题是,例如,如果我调用

代码语言:javascript
复制
G.nodes

它不会将节点列表打印为向量。例如,如果我不使用grid_2d_graph,而是使用:

代码语言:javascript
复制
G = nx.erdos_renyi_graph(int(N),0.3)
print G.nodes

我就会得到一份数字清单

代码语言:javascript
复制
[0,1,2,3,4...,N]

在格子图的情况下,我得到了:

[(0, 1), (1, 2), (3, 2), (0, 0), (3, 3), (3, 0), (3, 1), (2, 1), (0, 2), (2, 0), (1, 3), (2, 3), (4, 3), (2, 2), (1, 0), (4, 2), (0, 3), (4, 1), (1, 1), (4, 0)]

这就像一个黑客帝国。

我想得到一个节点向量(和另一个例子一样)和这个图的邻接矩阵。我能做什么?

EN

回答 1

Stack Overflow用户

发布于 2019-01-22 10:02:00

它是一个节点列表,您只是无法识别它,因为名称不是整数。对于2d晶格,节点由它们的坐标命名。所以(0,1)是一个节点。

试试看:

代码语言:javascript
复制
import networkx as nx
N = 5
M = 4 
G = nx.generators.lattice.grid_2d_graph(N,M, periodic=True)
list(G.neighbors((0,10)))
> [(1, 1), (0, 0), (0, 2), (4, 1)]
G.degree((0,1))
> 4

注意,您使用的似乎是networkx版本1.11或更早版本。在2.x中,G.nodes是一个"NodeView“而不是一个列表。如果升级,可以使用list(G.nodes)将"NodeView“转换为列表,就像我使用G.neighbors所做的那样(在较新的networkx版本中也不是列表)。

如果您不希望节点是元组,可以使用nx.relabel_nodes重新标记它们。如果你需要帮助,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54299842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档