找出点的最高x和y值

时间:2018-09-24 09:49:16

标签: sorting

我已经测量了拟合线的点。我在x方向上测量的点数是该点的第一个值(例如X1),该点的第二个值是在y方向上测量的点。

X1(2,9)
X2(9,3)
X3(5,4)
X4(6,4)

这意味着,例如在X3中,我在x方向上测量了5个点,在y方向上,我测量了4个点。使用x方向上的点,我将在x方向上拟合一条直线,使用y方向上的点,我将在y方向上拟合一条直线。为了获得更好的结果,x方向和y方向上的点越多越好。例如,最好选择X4,然后再选择X1,因为在X1中我在y方向上有9点,但是在x方向上只有2点,这在x方向上给我差的结果。在X4中,我同时拥有:x和y方向上的大量点。因此,我可以肯定的是,这些线已经足够好了。所以我想找到这个X#,在x和y方向上有(最高)点数

2 个答案:

答案 0 :(得分:0)

您是否尝试过检查代码?看来您的X处于升序,而您的Y则沿相反的顺序。也许像在变量中插入x和y值,然后按照您希望的顺序对它们进行排序。

答案 1 :(得分:0)

您需要编写一个对点的“适合度”进行排名的函数。

def fitness(point):
    '''
    ranks a point by the total number of points, 
    minus the difference between the number of x and y points.
    uses total number of points as a secondary rank
    '''
    num_points = sum(point)
    xydiff = max(point) - min(point)
    return num_points - xydiff, num_points

应根据您希望如何加权点来调整上述功能。

>>> points = [(2,9), (9,3), (5,4), (6,4)]
>>> sorted(points, key=fitness, reverse=True)
[(6, 4), (5, 4), (9, 3), (2, 9)]
>>> max(points, key=fitness) # the most fit point
(6, 4)