如何从 python 中的二维列表中获取最大 x 和最小 y 坐标?

How to get the max x and min y coordinates from a 2D list in python?

我有一个如下所示的列表:

[[8.91636727 0.50420552]
 [1.50918535 8.43128826]
 [4.18447757 0.21850886]
 [8.82701669 8.39773898]]

本质上它们是 x,y 坐标,我想知道如何获得最高的 x 和最低的 y。 (即 8.91.. 和 0.50..)。我从 X 开始,并想这样做:

for x,y in means:
    if x >= start:
        start = x; h = x; l = y 
    else:
        start = start

但想知道如何为 y 的最小值实现它。 另外我的另一个问题是可能有这样的情况:

[[8.91636727 0.50420552]
 [1.50918535 8.43128826]
 [4.18447757 0.21850886]
 [**8.92701669** 8.39773898]]

我不一定总是想要最高的 x 本身,我想要最高的 x 加上最低的 y。

您可以计算 xy 向量之间的差异。然后选择差异最大的那个。如果这不是你要找的,我一定会让你担心。你说的是 multi-objective 优化。您必须明确定义具有最高 x 和最低 y 的元素的含义。如果你不能把它放在一个单一的功能中,那么从根本上说不可能采用那个元素。您必须计算您的帕累托前沿并从那里手动获取一个元素。

这是一种使用 max 的方法。

例如:

data = [[8.91636727, 0.50420552], [1.50918535, 8.43128826], [4.18447757, 0.21850886], [8.82701669, 8.39773898]]
print(max(data, key=lambda x: (x[0], -x[1])))

输出:

[8.91636727, 0.50420552]

我的最终方法是:

li = []
difference = 0
for x,y in means:
    dif = x - y
    if dif >= difference:
        difference = dif; h = x; l = y 
    else:
        difference = difference

对于需要最大和最小坐标的人

coors= [[8.91636727, 0.50420552], [1.50918535, 8.43128826], [4.18447757, 0.21850886], [8.82701669, 8.39773898]]

max_xy = max(coors, key=lambda x: (x[0], x[1]))
min_xy = min(coors, key=lambda x: (x[0], x[1]))