首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Networkit中检索原始节点名

在Networkit中检索原始节点名
EN

Stack Overflow用户
提问于 2020-02-18 16:12:13
回答 1查看 684关注 0票数 2

我不知道Networkit是如何处理节点名称的。

假设我使用另一个Python模块(如Networkx)从edgelist读取一个大图;然后将它转换为一个网络图,然后执行一些操作,比如计算成对距离。这样做的一个简单代码可以是:

代码语言:javascript
复制
import networkx as nx
import networkit as nk

nxG=nx.read_edgelist('test.edgelist',data=True)

G = nk.nxadapter.nx2nk(nxG, weightAttr='weight')

apsp = nk.distance.APSP(G)
apsp.run()
dist=apsp.getDistances()

很简单-很简单。

如果我想用这些距离做点什么呢?例如,如果我想根据路径上的权重,或者任何需要检索原始节点if的其他度量来绘制它们,我不知道呢?

getDistances()函数返回一个列表列表,每个节点与每个其他节点的距离为一个,但我不知道Networkit如何将节点的名称映射到它用作节点标识符的it序列,从而得到计算距离并将其存储在输出中的顺序。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-19 12:16:11

在从networkx创建新图时,NetworKit创建一个字典,将nxG中的每个节点id映射到G中的0到n-1的唯一整数(其中n是节点数)和本指令。不幸的是,nx2nk没有返回这个映射,所以您应该自己创建它。

假设您希望从节点1到节点2的距离,其中12nxG中的节点in。

代码语言:javascript
复制
import networkx as nx
import networkit as nk

nxG=nx.read_edgelist('test.edgelist',data=True)

G = nk.nxadapter.nx2nk(nxG, weightAttr='weight')

# Get mapping from node ids in nxG to node ids in G
idmap = dict((id, u) for (id, u) in zip(nxG.nodes(), range(nxG.number_of_nodes())))

apsp = nk.distance.APSP(G)
apsp.run()
dist=apsp.getDistances()

# Get distance from node `1` to node `2`
dist_from_1_to_2 = dist[idmap['1']][idmap['2']]
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60285134

复制
相关文章

相似问题

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