我使用Python Networkx建立的曲线图和我有以下的节点位置作为一个例子(positions.txt):Python Scipy和Networkx:如何计算欧几里德距离矩阵?
1 21.5 23
2 24.5 20
3 19.5 19
4 22.5 15
5 24.5 12
节点ID,X,Y予读取使用熊猫文件并将位置设置为Networkx中的节点属性。在for
循环中使用add_edge(id1, id2, weight)
方法添加节点(没有自身边缘)。到目前为止,我已经假设所有的节点默认都是相互连接的,并且没有考虑节点的半径或距离等参数。
现在,我想计算使用这些节点位置的节点之间的欧几里德半径或距离矩阵,并且使用此矩阵,我希望能够打印落在给定半径范围内的节点的邻居,并将该文件另存为一个csv矩阵文件。一位朋友建议我使用scipy
的euclidean
方法,但我不知道如何使用它来构建矩阵,因此我没有起点。我尝试使用ego_graph()
,但它没有给我想要的结果。
任何帮助在解决我的问题表示赞赏。
在此先感谢。 (使用Ubuntu 14.04 32位虚拟机和Python 2.7)
节点对(i,j)的距离与(j,i)的距离相同,并且显然如果一个在范围内,那么将是另一个。当你保存你的数据时,你想要两个结果吗? – Reti43
@ Reti43这是你所做的一个好点子。如果两个结果都保存了,那么它肯定会成为矩阵。我假设如果我只保存一个结果,那么它就像一个边界列表。如果我能够同时拥有这两种产品,那么最好能让我选择哪种产品最适合我的实验。 – user136819
还有一个问题,即使它可能不相关。 add_edge(id1,id2,weight)'添加节点的含义是什么?你可以用'add_node()'简单地添加一个节点,然后将该位置设置为一个属性,就像你之前描述的一个句子一样。 – Reti43