我有一组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]
答案 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]