Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于距离的点列表排序功能_Python_Function_Point - Fatal编程技术网

Python 基于距离的点列表排序功能

Python 基于距离的点列表排序功能,python,function,point,Python,Function,Point,[问题已改写以澄清] 我在想一个排序函数。正在排序的是点列表 排序功能包含3个点。一个来自要排序的点列表,另两个用于比较。目标是确定要排序的点与其他两点之间的相对欧氏距离。当点直接位于两点之间时,应给出函数的最低值。函数应利用两点之间的欧几里德距离 到目前为止,似乎公式应该是距离的一些平方,或者在两个给定点之间创建一个点,并使用到该点的欧几里德距离。到目前为止,我已经包括了两个可能的函数 p is the point to be sorted p1,p2 are the given points

[问题已改写以澄清]

我在想一个排序函数。正在排序的是点列表

排序功能包含3个点。一个来自要排序的点列表,另两个用于比较。目标是确定要排序的点与其他两点之间的相对欧氏距离。当点直接位于两点之间时,应给出函数的最低值。函数应利用两点之间的欧几里德距离

到目前为止,似乎公式应该是距离的一些平方,或者在两个给定点之间创建一个点,并使用到该点的欧几里德距离。到目前为止,我已经包括了两个可能的函数

p is the point to be sorted
p1,p2 are the given points

def f(p,p1,p2): #Midpoint distance
   midPoint = midpoint(p1,p2)
   return distance(p,midPoint)

def f(p,p1,p2): #Sum of squares
   return distance(p,p1) ** 2 + distance(p,p2) ** 2

def distance(pointA,pointB): #Psudocode
   dx = pointA.x - pointB.x
   dy = pointA.y - pointB.y
   return sqrt(dx ** 2 + dy ** 2)
以下是一个例子:


这里考虑的两点是在它们之间划出一条线的两点。圆圈点应为排序算法中的三个最低点。左边的接近点因接近两个点中的一个而受到处罚,但与另一个点相差很远。

使用平均值似乎是一种直观的方法,因为这与使用总和是一样的。你可以做的另一件事是使用“加权”平均值。例如,如果a是较短的距离,你可以通过使用2*a+b/3赋予它更高的优先级,例如,或者一般来说,使用m*a+b*n/m+n,其中m>n.

使用平均值似乎是一种直观的方法,因为这样做的方式与使用总和相同。你可以做的另一件事是使用“加权”平均值。例如,如果a是较短的距离,您可以通过使用2*a+b/3赋予它更高的优先级,例如,或者通常使用m*a+b*n/m+n,其中m>n.

该方法可能会有所帮助?所以你要求距离的平方和。这样,左侧节点将因在直线中距离右侧节点太远而受到惩罚

另一个选项是获取到两个基准节点所形成直线上的中点的距离。与左侧的节点相比,这三个节点更可取。

该方法可能会有所帮助吗?所以你要求距离的平方和。这样,左侧节点将因在直线中距离右侧节点太远而受到惩罚


另一个选项是获取到两个基准节点所形成直线上的中点的距离。与左侧的节点相比,这三个节点更可取。

可以提供更多的上下文吗?因为我真的不明白你想用哪种逻辑让这3个最接近。我会做与你完全相反的事。我定义了一个距离h,然后用它我会说,哦,是的,它们确实是最近的,或者不是。另一方面,如果没有更多关于你想要的特性的信息,那就太难了。听起来你在使用矩阵,在这种情况下,请解释为什么你认为这三点是最接近的。这可能有助于澄清您目前有点模糊的问题陈述。此外,如果您不告诉我们您正在做什么,我们如何才能告诉您一种公认的做法?不同的情况需要不同的距离,所以我想说,对于你的一般问题,没有公认的答案。如果你想得到有用的答案,你必须缩小范围。我已经更新了这个问题,试图澄清我的意思。我想最小二乘法/最小化平方和可能是我想要的。能提供更多的背景吗?因为我真的不明白你想用哪种逻辑让这3个最接近。我会做与你完全相反的事。我定义了一个距离h,然后用它我会说,哦,是的,它们确实是最近的,或者不是。另一方面,如果没有更多关于你想要的特性的信息,那就太难了。听起来你在使用矩阵,在这种情况下,请解释为什么你认为这三点是最接近的。这可能有助于澄清您目前有点模糊的问题陈述。此外,如果您不告诉我们您正在做什么,我们如何才能告诉您一种公认的做法?不同的情况需要不同的距离,所以我想说,对于你的一般问题,没有公认的答案。如果你想得到有用的答案,你必须缩小范围。我已经更新了这个问题,试图澄清我的意思。我认为最小二乘法/最小化平方和可能是我要寻找的。这两种方法都可能有用,因为最接近的可能位于给定的两点之间。现在很难说哪一个更好。这两种方法都是有用的,因为最接近的可能是在给定的两点之间。现在很难说哪一个更好。最终可能会尝试这两种方法,看看哪种方法能产生更好的结果。