【发布时间】:2018-03-28 01:28:11
【问题描述】:
我正在使用 Python Networkx 来构建图表,我有以下节点位置作为示例(positions.txt):
1 21.5 23
2 24.5 20
3 19.5 19
4 22.5 15
5 24.5 12
节点 ID、X、Y。我使用 Pandas 读取文件并将位置设置为 Networkx 中的节点属性。在for 循环中使用add_edge(id1, id2, weight) 方法添加节点(没有自边缘)。到目前为止,我已经假设所有节点都默认相互连接,并且没有考虑节点的半径或距离等参数。
现在,我想使用这些节点位置计算节点之间的欧几里得半径或距离矩阵,并且使用这个矩阵,我希望能够打印落在给定半径n 内的节点的邻居并将文件保存为一个 csv 矩阵文件。一位朋友建议我使用scipy 的euclidean 方法,但我不知道如何使用它来构建矩阵,因此我没有起点。我尝试使用ego_graph(),但它没有给我想要的结果。
任何帮助解决我的问题表示赞赏。
提前致谢。 (使用 Ubuntu 14.04 32 位 VM 和 Python 2.7)
【问题讨论】:
-
节点对 (i, j) 的距离与 (j, i) 的距离相同,显然,如果一个在范围内,另一个也在范围内。保存数据时,您想要两个结果吗?
-
@Reti43 你说得很好。如果两个结果都保存了,那么它肯定会变成一个矩阵。我假设如果我只保存一个结果,那么它就像一个边缘列表。如果我能同时拥有这两者是最好的,以便以后我可以选择最适合我的实验。
-
还有一个问题,尽管它可能无关紧要。
add_edge(id1, id2, weight)添加节点是什么意思?你可以简单地用add_node()添加一个节点,然后将位置设置为一个属性,就像你之前描述的一句话一样。 -
我正在使用2个
for循环在add_edge()中添加节点,而不是多次使用add_node()
标签: python matrix scipy networkx