我有 2 个表示笛卡尔图中点坐标的数字列表。
我的目标是将 10 范围内的许多点视为 1 点。
第一个例子:
- 第一点 (1,2)
- 第二点 (2,3)
- 第三点 (3,4)
- 第 4 点 (80,90)
坐标列表:
#(1)
x = [1,2,3, 80]
Y = [2,3,4, 90 ]
我想删除 10 范围内最近的点(在 x 和 y 中),我们可以将前三个数字视为一个数字。
结果是:
x = [1, 80] and y = [2, 90] or
x = [2,80] and y = [3, 90] or
x = [3,80] and y = [4, 90]
如果坐标列表是:
#(2)
x = [1,2,3, 80]
Y = [2,3,70, 90 ]
我们可以将前 2 个数字视为一个
结果是:
x = [1, 80] and y = [2, 90] or
x = [2,80] and y = [3, 90] or
如果它们是:
#(3)
x = [1,2, 75, 78 , 80, 101]
Y = [2,3, 81, 86, 90 , 91]
结果:
x = [1,75, 101] and y = [2,81, 91] or
x = [1,78, 101] and y = [2,86, 91] or
x = [1,80, 101] and y = [2,90, 91] or
x = [2,75, 101] and y = [3,81, 91] or
x = [2,78, 101] and y = [3,86, 91] or
x = [2,80, 101] and y = [3,90, 91] or
我只需要这 6 个解决方案中的 1 个。如果我有x = [1,75]
或并不重要x = [1,78]
。重要的是只有一个接近的数字。
最后一个例子:
x = [ 95, 154, 161, 135, 138, 116]
y = [158, 166, 168, 170, 170, 171]
在这种情况下,只剩下 3 分。
171 - 170 = 1 => 138 - 116 = 22 both results are in the range of 25 i choose to delete 116 and 171
170 - 170 = 0 => 138 - 135 = 3 both result are in the range of 25 i delete 170 and 138
170 - 168 = 2 => 135 - 161 = 26 i cannot delete
168 - 166 = 2 => 161 - 154 = 7 i delete 168 and 161
166 - 158 = 8 => 154 - 95 = 59 i cannot delete
x = [95, 154, 161, 135]
Y = [158, 166, 168, 170]
我重复该操作,然后删除 x 中的 161 和 y 中的 168,因为:168 - 166 = 2 => 161 - 154 = 7
x = [95, 154, 135]
Y = [158, 166, 170]
y
列表按升序排列。
比较它们的最快方法是什么?