首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止Networkit在读取边列表时更改节点id

如何防止Networkit在读取边列表时更改节点id
EN

Stack Overflow用户
提问于 2021-10-29 13:19:44
回答 1查看 51关注 0票数 2

我有一个表示有向图的csv文件,它是一个带有不连续id节点的边列表,我用下面的方法在neworkit图中读取它

reader = nk.graphio.EdgeListReader(',',1,'#',directed=True,continuous=False)

问题是networkit更改了节点id,这应该是由于我的图中的节点从任意数字(而不是0或1)开始并且不是连续的。我想知道是否有一种方法可以在不更改节点编号的情况下防止这种情况发生。

这里是我的棱角图

代码语言:javascript
复制
#from_address,to_address
39243,1040
39244,39245
39246,30
39247,39248
39249,1040
39250,2611

在这里,用于查看节点id的代码被更改

代码语言:javascript
复制
reader = nk.graphio.EdgeListReader(',',1,'#',directed=True,continuous=False)
try:
    g = reader.read(fname)
except: 
    print("File not exist")
    exit()
i = 0
for u, v in g.iterEdges():
    if i > 5:
        print('...')
        break
    print(u, v)
    i += 1

>
0 1
2 3
4 5
6 7
8 1
9 10
...
EN

回答 1

Stack Overflow用户

发布于 2021-10-29 20:15:12

NetworKit节点ids始终在0,n-1间隔内。但是,通过使用reader.getNodeMap()检索从ids到NetworKit节点ids的映射,您仍然可以使用原始ids。下面是一个示例:

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

reader = nk.graphio.EdgeListReader(',',1,'#',directed=True,continuous=False)
g = reader.read('edgelist.txt')
map = reader.getNodeMap()

# Using your example, this is the resulting map:
# {'1040': 1, '2611': 10, '30': 5, '39243': 0, '39244': 2, '39245': 3, '39246': 4, '39247': 6, '39248': 7, '39249': 8, '39250': 9}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69769595

复制
相关文章

相似问题

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