我不熟悉将 NetworkX 库与 Python 一起使用。
假设我导入了一个 Pajek 格式的文件:
import networkx as nx
G=nx.read_pajek("pajek_network_file.net")
G=nx.Graph(G)
我的文件的内容是(在 Pajek 中,节点称为“顶点”):
*Network
*Vertices 6
123 Author1
456 Author2
789 Author3
111 Author4
222 Author5
333 Author6
*Edges
123 333
333 789
789 222
222 111
111 456
现在,我想根据库文档计算网络中节点之间的所有最短路径长度,并且我正在使用此函数
path = nx.all_pairs_shortest_path_length(G)
返回: lengths – 由源和目标键入的最短路径长度字典。
我得到的回报:
print path
{u'Author4': {u'Author4': 0, u'Author5': 1, u'Author6': 3, u'Author1': 4, u'Author2': 1, u'Author3': 2}, u'Author5': {u'Author4': 1, u'Author5': 0, u'Author6': 2, u'Author1': 3, u'Author2': 2, u'Author3': 1}, u'Author6': {u'Author4': 3, u'Author5': 2, u'Author6': 0, u'Author1': 1, u'Author2': 4, u'Author3': 1}, u'Author1': {u'Author4': 4, u'Author5': 3, u'Author6': 1, u'Author1': 0, u'Author2': 5, u'Author3': 2}, u'Author2': {u'Author4': 1, u'Author5': 2, u'Author6': 4, u'Author1': 5, u'Author2': 0, u'Author3': 3}, u'Author3': {u'Author4': 2, u'Author5': 1, u'Author6': 1, u'Author1': 2, u'Author2': 3, u'Author3': 0}}
正如你所看到的,它真的很难阅读,并且在以后使用......
理想情况下,我想要的是格式类似于以下的返回:
source_node_id, target_node_id, path_length
123, 456, 5
123, 789, 2
123, 111, 4
简而言之,我需要仅使用(或至少包括)节点 ID 来获得回报,而不仅仅是显示节点标签。并且,为了将每对可能的对放在一行中,并带有相应的最短路径……
这在 NetworkX 中可行吗?