我正在尝试处理wiki-Vote.txt(https://snap.stanford.edu/data/wiki-Vote.html)中给出的图表。有7115个节点,id范围从3到8297.我想重新标记从0到7114的节点。我检查了relabel_nodes()中的映射,但仍然无法解决问题。请建议。感谢
答案 0 :(得分:3)
给定带有一组节点的图G
,最简单的事情是
mapping = {old_label:new_label for new_label, old_label in enumerate(G.nodes())}
H = nx.relabel_nodes(G, mapping)
这将创建一个字典mapping
,其键是旧标签,其值是新标签(在dictionary comprehensions上阅读)。新标签的排序由G.nodes()
返回值(您无法控制)的顺序给出。新图H
的节点标签已更改。
如果您需要特定订单,则需要适当地对G.nodes()进行排序。所以你可以做到
nodelist = G.nodes()
nodelist.sort()
mapping = {old_label:new_label for new_label, old_label in enumerate(G.nodes())}
H = nx.relabel_nodes(G, mapping)
将按数字顺序排序(如果节点名称为字符串,则按字母顺序排序)。如果您想要其他自定义订单,您必须弄清楚如何对节点列表进行排序。