1

我正在尝试获取加权 networkx 图并将其转换为 edgelist .txt 文件,其中每一行采用三个以空格分隔的数字的形式,表示起始节点、结束节点和相应的权重。

这是我为一个简单的七节点加权无向图所做的尝试:

 import networkx as nx
 import numpy as np
 A = np.matrix([[0,7,7,0,0],[7,0,6,0,0],[7,6,0,2,1],[0,0,2,0,4], 
 [0,0,1,4,0]])
 G = nx.from_numpy_matrix(A)
 nx.write_edgelist(G, "weighted_test_edgelist.txt", delimiter=' ')

文本文件已创建,如下所示:

0 1 {'weight': 7}

0 2 {'weight': 7}

1 2 {'weight': 6}

2 3 {'weight': 2}

2 4 {'weight': 1}

3 4 {'weight': 4}

但是,我希望以上内容改为显示为

0 1 7

0 2 7

1 2 6

2 3 2

2 4 1

3 4 4
4

1 回答 1

3

尝试:

nx.write_edgelist(G, "weighted_test_edgelist.txt", delimiter=' ', data=['weight'])

输出:

0 1 7
0 2 7
1 2 6
2 3 2
2 4 1
3 4 4

根据文档:

data : bool or list, optional If False 不写入边缘数据。如果 True 写入边缘数据字典的字符串表示。如果提供列表(或其他可迭代),则写入
列表中指定的键。

于 2019-10-16T18:10:05.807 回答