如何找到一组坐标中最大的x,y坐标?

时间:2018-09-07 14:48:44

标签: arrays python-3.x

我有一组x,y坐标,我想获得最大的坐标值,其差值小于0.1。

例如; 我有一个同时包含x,y值的数组,如下所示:

array = [6.72, 0.16,13.28, 0.14,13.3, 5.64,6.74, 5.68,6.62, 0.14]

x values -> 6.72,13.28,13.3,6.74,6.62
y values -> 0.16,0.14,5.64,5.68,0.14

如果我取x值; 6.72,6.74,6.62值的差值小于0.1。
所以我想带他们最大的价值。是6.74。 13.3、13.28的差也小于0.1。所以我需要取最大值13.3。
我需要替换6.74和13.3中的6.72,6.74,6.62和13.3中的13.28

我也需要对y值做同样的事情。

我的输出数组应该是;

output_array = [6.74, 0.16,13.3, 0.16,13.3, 5.68,6.74, 5.68,6.74, 0.16]

1 个答案:

答案 0 :(得分:2)

您可以迭代排序的坐标值,并仅将与前一个数字相差小于0.1的最大数字保留下来,并将前一个数字映射到最大的数字。

coords = [6.72, 0.16, 13.28, 0.14, 13.3, 5.64, 6.74, 5.68, 6.62, 0.14]
last_coord = None
unmapped = []
mapping = {}
for coord in sorted(coords):
    if last_coord is not None and coord - last_coord >= 0.1:
        mapping.update(dict.fromkeys(unmapped, last_coord))
        unmapped = []
    unmapped.append(coord)
    last_coord = coord
mapping.update(dict.fromkeys(unmapped, last_coord))
coords = list(map(mapping.get, coords))
print(coords)

这将输出:

[6.74, 0.16, 13.3, 0.16, 13.3, 5.68, 6.74, 5.68, 6.74, 0.16]
相关问题