如何从 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。
您可以计算 x
和 y
向量之间的差异。然后选择差异最大的那个。如果这不是你要找的,我一定会让你担心。你说的是 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]))
我有一个如下所示的列表:
[[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。
您可以计算 x
和 y
向量之间的差异。然后选择差异最大的那个。如果这不是你要找的,我一定会让你担心。你说的是 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]))