【问题标题】:Python & NetworkX for Network Topology Data用于网络拓扑数据的 Python 和 NetworkX
【发布时间】:2017-11-14 23:35:29
【问题描述】:

我尝试了数千次应用“NetworkX”Python 库来分析通过此链接找到的数据集:

http://konect.uni-koblenz.de/networks/topology

只要我对在那里找到的数据执行我的 Python 代码,我就会得到一些不切实际的结果。

g = nx.read_weighted_edgelist('out.topology')
g.size()
0

0 因为这个庞大的数据是完全错误的!

您能帮我通过“NetworkX” Python 库读取这些数据吗?

【问题讨论】:

  • 你在尝试什么版本的networkx?我使用的是 2.0,我从 nx.read_weighted_edgelist('out.topology') 收到错误,因此未创建图表。您正在使用的确切命令和确切的错误消息(如果有)是什么?
  • 我使用的是 Python 2.7,我假设我使用的是最新版本的 networkX,因为我刚刚通过“pip install networkx”安装了它

标签: python graph networkx


【解决方案1】:

正如有人提到尝试阅读列表会出错。但是,如果你去掉第一行 (% sym positive) 并尝试下面的代码来创建你的图表,它应该没问题:

import networkx as nx

with open("out.topology", 'rt') as f:
    g = nx.parse_edgelist(f, create_using=nx.DiGraph(), data=[('weight', float), ('timestamp', float)])

数据包含 4 列:源 |目标 |重量 |边缘的时间戳。

只需在参数中包含该信息,如我的 sn-p 所示。

【讨论】:

  • 谢谢您,Rodgdor 先生。如果您阅读读取文件,您将知道数据表示无向图。我认为,按照您的建议,最好使用“nx.Graph()”而不是“nx.DiGraph()”。
  • 顺便说一句,我做了一些看起来像你的代码,但我仍然得到“g.size()”等于零,这在逻辑上是不正确的!
  • 我刚刚将数据转换为“txt”扩展名,我得到了合理的数据结果:)
  • 阅读README 文件我意识到它说它是一个多图,所以你可能想使用nx.MultiGraph() 代替。 .txt 扩展应该完全没有区别,多么奇怪。
  • 您可以使用可选参数comments='%' 让代码忽略第一行。这告诉 networkx 将以字符串 '%' 开头的任何行视为注释。
猜你喜欢
  • 1970-01-01
  • 2020-10-23
  • 2012-05-31
  • 1970-01-01
  • 2014-10-14
  • 2011-03-31
  • 2011-05-08
  • 1970-01-01
  • 2013-06-30
相关资源
最近更新 更多