在Networkit中检索原始节点名称

2024-09-30 12:18:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我不确定我是否了解Networkit如何处理节点的名称

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

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()

简单的豌豆

现在,如果我想对这些距离做些什么呢?例如,如果我想根据(我不知道)路径上的权重或任何其他需要检索原始节点ID的度量来绘制它们,该怎么办

getDistances()函数返回一个列表列表,每个节点一个列表,每个列表与每个其他节点的距离相同,但我不知道Networkit如何将节点的名称映射到它用作节点标识符的整数序列,以及它计算距离并将其存储在输出中所遵循的顺序


Tags: 模块importnetworkx名称距离列表节点as
1条回答
网友
1楼 · 发布于 2024-09-30 12:18:30

从networkx创建新图形时,NetworKit会创建一个字典,将nxG中的每个节点id映射到G中从0到n-1的唯一整数(其中n是节点数)和this instruction。 不幸的是,nx2nk没有返回此映射,因此您应该自己创建它

假设您希望获得从节点1到节点2的距离,其中12nxG中的节点ID:

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']]

相关问题 更多 >

    热门问题