开发者社区> 问答> 正文

来自networkx.lattice.grid_2d_graph得到邻接矩阵和图

我必须创建一个尺寸为mxn的点阵图。

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

N = 5
M = 4
G = nx.generators.lattice.grid_2d_graph(N,M, periodic=True)
我期待一个networkx.graph对象作为结果。

问题是,如果我调试的话

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

G = nx.erdos_renyi_graph(int(N),0.3)
print G.nodes
我会得到一个数字列表

[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)]

这就像一个矩阵。

我想得到一个节点向量(如在另一种情况下)和该图的邻接矩阵。

展开
收起
一码平川MACHEL 2019-01-22 15:09:24 3426 0
1 条回答
写回答
取消 提交回答
  • 它是一个节点列表,您只是无法识别它,因为名称不是整数。对于2d晶格,节点由它们的坐标命名。(0,1)节点也是如此。

    试试吧:

    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。

    2019-07-17 23:26:17
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载