【发布时间】:2017-12-04 21:37:20
【问题描述】:
我正在尝试计算阈值为 4 的两个元组列表的欧几里得距离。如果阈值小于特定值,则增加计数器。每个元组都是点的 x,y,z 坐标。无论如何我可以降低 list1 与 list2 的比较..
X = [ (1,2,3),(2,3,4), (4,5,6) ]
Y = [ (1,2,2) , (3,4,5),(6,7,8) ]
from math import sqrt
dist_X = [ sqrt((p[0] - 0)**2 + (p[1] - 0)**2 + (p[2] - 0)**2) for p in X]
dist_Y = [ sqrt((p[0] - 0)**2 + (p[1] - 0)**2 + (p[2] - 0)**2) for p in Y]
for x in dist_X:
print (x , [ i for i,y in enumerate(dist_Y) if abs(x-y) <= 4])
我正在考虑首先计算每个点与原点 (0,0,0) 的欧几里得距离,这样两个列表现在都包含彼此接近的点,但它不起作用,因为它是一个标量值。 . 我的方向正确吗?
编辑
visited1 = [ (1,2,3),(2,3,4), (4,5,6) ]
visited2 = [ (1,2,2) , (3,4,5),(6,7,8) ]
def euclidean(a,b):
return sqrt((a[0] - b[0])**2+(a[1]-b[1])**2+(a[2]-b[2])**2)
comparison = 0
for i,j in enumerate(visited2):
for k,l in enumerate(visited1):
if euclidean(visited2[i],visited1[k]) < 4:
count += 1
comparison += 1
在此列表 1 的每个元素都与列表 2 中的每个元素进行比较。我想知道是否有一种方法可以在给定点 (x,y,z) 的情况下最小化比较?
【问题讨论】:
-
您到底想检测什么?你能给出你的例子的预期答案并解释一下吗?
-
您对两个列表(每个列表由多个坐标组成)之间的欧几里得距离的确切定义是什么?
-
我想计算列表 1 的原子与列表 2 之间的欧几里得距离,如果距离小于 4,我需要这些值,但我不希望 list1 的每个元素都与每个元素进行比较在list2 .. 相反,我需要一种降低比较的方法,就像我上面所做的任何预计算一样。这只是一个例子..例如跳过我们知道彼此太接近的值
-
这仍然没有定义两者之间的欧几里得距离是什么或意味着什么——或者是你试图定义它但不知道如何定义的真正问题?您可以在实现计算结果后的某些内容之后对其进行优化。附言当您回复某人的评论时,请将@their_user_name 放在文本中某处,以便他们收到您已回复的通知。
-
@martineau 我已经编辑了我的问题
标签: python list tuples coordinates