我有一个表示有向图的csv文件,它是一个带有不连续id节点的边列表,我用下面的方法在neworkit图中读取它
reader = nk.graphio.EdgeListReader(',',1,'#',directed=True,continuous=False)
问题是networkit更改了节点id,这应该是由于我的图中的节点从任意数字(而不是0或1)开始并且不是连续的。我想知道是否有一种方法可以在不更改节点编号的情况下防止这种情况发生。
这里是我的棱角图
#from_address,to_address
39243,1040
39244,39245
39246,30
39247,39248
39249,1040
39250,2611在这里,用于查看节点id的代码被更改
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
...发布于 2021-10-29 20:15:12
NetworKit节点ids始终在0,n-1间隔内。但是,通过使用reader.getNodeMap()检索从ids到NetworKit节点ids的映射,您仍然可以使用原始ids。下面是一个示例:
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}https://stackoverflow.com/questions/69769595
复制相似问题