由于某些原因,我无法找出代码不起作用的原因。 我想计算列表中每个值与所有其他值之间的距离。 假设我从列表中取出第一个索引 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)
最佳答案
目前还不清楚如何计算两个元素之间的距离,但我认为差异的范数应该可以做到这一点。这是一个关于如何执行此操作的小示例,同时使用列表表达式保持代码简单和最少:
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]]
关于python - 如何从一个列表中获取一个值并将其应用于另一列表中的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55987854/