You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免Networkit读取边列表时自动修改原始节点ID

Networkit保留原始节点ID的解决方案

Networkit 底层为了保证图计算的性能,内部强制要求节点ID为从0开始的连续整数,因此不存在直接关闭自动映射的配置,但可以通过官方自带的映射工具实现原始ID的无缝兼容,无需修改原始文件的节点编号。

具体实现步骤

  • 读取边列表后调用reader.getNodeMap()方法,即可获得原始节点ID到Networkit内部ID的映射字典
  • 自行构造反向映射字典,即可实现内部ID到原始ID的转换,遍历或输出时直接转换即可还原原始编号

示例代码

reader = nk.graphio.EdgeListReader(',',1,'#',directed=True,continuous=False)
try:
    g = reader.read(fname)
except: 
    print("File not exist")
    exit()

# 原始ID转内部ID映射
orig_to_inner = reader.getNodeMap()
# 内部ID转原始ID映射
inner_to_orig = {inner_id: orig_id for orig_id, inner_id in orig_to_inner.items()}

# 遍历输出原始ID的边
i = 0
for u, v in g.iterEdges():
    if i > 5:
        print('...')
        break
    print(inner_to_orig[u], inner_to_orig[v])
    i += 1

运行上述代码后输出即可和原始边列表的节点ID完全一致:

39243 1040
39244 39245
39246 30
39247 39248
39249 1040
39250 2611
...

补充说明

如果后续需要导出计算后的边列表、节点属性等结果,直接用inner_to_orig映射转换后输出即可,全程不需要修改原始数据的节点编号。

内容的提问来源于stack exchange,提问作者lilf4p

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:24:01