由于某些原因,我无法找出为什么代码无法正常工作。 我想计算列表中每个值与所有其他值之间的距离。 就像说我从rar [1] =(2927,6312)列表中取出第一个索引 我想知道它与它自身的距离(为0)以及列表中的所有其他值。
这就是为什么我要制作一个循环,在该循环中,只有在动作完成后,第二点与第二点的循环才会改变。最后,我想得到一个列表,其中的子列表包含每个值到另一个值的距离。像这样:
距离= [[0,1,2,3,4],[0,1,2,3,4],[0,1,2,3,4],[0,1,2,3 ,4]]
其中0是点本身到点本身之间的距离。 1是列表中第一个点与第一个值之间的距离 2是列表中第一个点和第二个值之间的距离。...
非常感谢您。
rar= [(2925, 6597), (2927, 6312), (2934, 6545), (2938, 7412), (2941, 6456)]
templist=[]
distance=[]
for i in range(len(rar)) :
firstpoint = rar[i]
for q in range(len(rar):
secpoint = rar[q]
zipz = np.array(list(zip(firstpoint,secpoint)))
nan = round(np.linalg.norm(zipz))
templist.append(nan)
distance.append(templist)
答案 0 :(得分:1)
目前尚不清楚如何计算两个元素之间的距离,但我认为差异的范数应该可以做到。这是一个有关如何执行此操作的小示例,同时使用列表表达式使代码保持简单和最少:
import numpy as np
rar = [(2925, 6597), (2927, 6312), (2934, 6545), (2938, 7412), (2941, 6456)]
distance = [[round(np.linalg.norm(np.array(a)-np.array(b))) for b in rar] for a in rar]
print(distance)
输出:
[[0.0, 285.0, 53.0, 815.0, 142.0],
[285.0, 0.0, 233.0, 1100.0, 145.0],
[53.0, 233.0, 0.0, 867.0, 89.0],
[815.0, 1100.0, 867.0, 0.0, 956.0],
[142.0, 145.0, 89.0, 956.0, 0.0]]