我有一组点,例如:pointA(3302.34,9392.32)、pointB(34322.32,11102.03) 等
我需要对它们进行缩放,以便每个 x 和 y 坐标都在 (0.0 - 1.0) 范围内。 我尝试通过首先找到数据集中的最大 x 值 (maximum_x_value) 和该集中最大的 y 值 (minimum_y_value) 来做到这一点。然后我做了以下事情:
pointA.x = (pointA.x - minimum_x_value) / (maximum_x_value - minimum_x_value)
pointA.y = (pointA.y - minimum_y_value) / (maximum_y_value - minimum_y_value)
这改变了相对距离(?),因此使数据对我的目的毫无用处。有没有一种方法可以缩放这些坐标,同时保持它们的相对距离不变?
最佳答案
您需要将 x
值和 y
值缩放相同的量!我建议按两个范围中较大的一个进行缩放(x
或 y
)。在伪代码中,你会有类似
scale = max(maximum_x_value - minimum_x_value,
maximum_y_value - minimum_y_value)
然后点之间的所有距离都将按 scale
进行缩放,这就是我假设你要求的,所以如果点 p_1
是点的两倍p_2
与 p_3
相比,在重新缩放之前,它在重新缩放之后也是原来的两倍。您应该能够使用勾股定理很容易地向自己证明这一点。
关于python - 缩放 2D 坐标并保持它们的相对欧氏距离不变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2450035/