【发布时间】:2023-12-17 09:55:01
【问题描述】:
假设我有一个 (x, y) 坐标列表。一个这样的列表是这样的:
coords = [(7, 37), (6, 38), (6, 37), (7, 38), (6, 39), (7, 39), (6, 40), (7, 40), (6, 41), (7, 41), (6, 42), (7, 42), (6, 43), (7, 43), (6, 44), (7, 44), (6, 45), (7, 45), (6, 46), (7, 46), (6, 47), (7, 47), (6, 48), (7, 48), (6, 49), (7, 49), (6, 50), (7, 50), (6, 51), (7, 51), (6, 52), (7, 52), (6, 53), (7, 53), (6, 54), (7, 54), (6, 55), (7, 55), (6, 56), (7, 56), (6, 57), (7, 57)]
现在说我想找到由这些坐标形成的矩形的右上角最角。
最初,我认为我可以做到max(zip(*coords)[0]), min(zip(*coords)[1])。这将给我最大的 x 值和最大的 Y 值。但是,这点不保证在列表中。
右下角可以找到max(coords)。左上角由min(coords) 找到。但是如果我想找到右上角,最有效的方法是什么。
我可以遍历列表,并为每个值计算它与max(zip(*coords)[0]), min(zip(*coords)[1]) 的距离。但是对于较大的点列表,对每个值执行平方根并不是很有效。
有没有一种快速的方法可以在大列表中找到右上角的点?
【问题讨论】:
-
您对其中一个轴有偏好吗?如果没有,如果有没有左上角坐标(即在列表中)怎么办?
-
什么情况下没有左上角?如果不止一个?不确定“您是否偏爱某个轴”是什么意思。
-
(0, 0)和(1,1)在常规坐标系中。左上角是哪个? -
您要么寻找最小边界矩形的角,要么已经有解决方案。或者离拐角最近的点——你已经有了解决方案。
-
它们都同样接近 (0,1),任何一个都可以接受。我的数据集中可能总会有一个。
标签: arrays python-2.7 multidimensional-array coordinates distance