首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何根据节点的参数对节点进行排序?

如何根据节点的参数对节点进行排序?
EN

Stack Overflow用户
提问于 2019-06-05 02:35:03
回答 1查看 49关注 0票数 0

我将写一个例子来阐明我的意思:

test = nx.Graph()
test.add_edge(0,3)
test.add_edge(1,2)
test.nodes 
Out: NodeView((0, 3, 1, 2))
nx.to_numpy_matrix(test)
Out: matrix([[0., 1., 0., 0.],
            [1., 0., 0., 0.],
            [0., 0., 0., 1.],
            [0., 0., 1., 0.]])

因此,如果您检查上面的示例,您可以看到networkx按照您将节点添加到图中的顺序对节点进行排序。

问题是我需要我的邻接矩阵按照给节点的编号排序。所以在我的例子中,最终的矩阵必须是:

Out: matrix([[0., 0., 0., 1.],
            [0., 0., 1., 0.],
            [0., 1., 0., 0.],
            [1., 0., 0., 0.]])

此外,我正在从一个边列表文件中读取图形。

最后,我的真正的问题是输出矩阵的索引与图中的索引不同。对于我的例子,如果我想检查矩阵中的节点1,我必须写matrix2,因为它是我在边列表中写入的第三个节点。有人知道我该怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-05 02:52:27

如果你事先知道你的节点,那么你可以在添加边之前将它们添加到图中。例如,

>>> G = nx.Graph()
>>> G.add_node(0)
>>> G.add_node(1)
>>> G.add_node(2)
>>> G.add_node(3)
>>> G.add_edge(0,3)
>>> G.add_edge(1,2)
>>> G.nodes
NodeView((0, 1, 2, 3))
>>> nx.to_numpy_matrix(G)
matrix([[0., 0., 0., 1.],
        [0., 0., 1., 0.],
        [0., 1., 0., 0.],
        [1., 0., 0., 0.]])

或者,查看API文档,您可以简单地执行以下操作:

print(nx.to_numpy_matrix(test, nodelist=[0,1,2,3]))

输出:

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

https://stackoverflow.com/questions/56449518

复制
相关文章

相似问题

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