如何使用Python获取一组点的中心

38 投票
4 回答
73340 浏览
提问于 2025-04-16 08:02

我想要找到由一组点组成的图形的中心点(x,y)。

我该怎么做呢?

4 个回答

10

我假设一个点是一个像 (x,y) 这样的元组,所以你可以用 zip 函数把所有的 x 值和 y 值组合在一起。接着,利用 x 值和 y 值的最小值和最大值,你就可以找到中心点。

x,y=zip(*points)
center=(max(x)+min(x))/2., (max(y)+min(y))/2.

示例输出

Points in an array : [(411, 148), (304, 148), (357, 241)]
x:(411, 304, 357)
y:(148, 148, 241)
center: (357.5, 194.5)
16

如果你有一组点,它们存储在一个名为 positions 的 numpy 数组中,大小是 N x 2,那么这个组的中心点(也叫重心)可以简单地通过以下方式计算:

centroid = positions.mean(axis=0)

这样你就能直接得到两个坐标,结果也是一个 numpy 数组。

一般来说,numpy 数组可以用来进行这些计算,而且方式是向量化的,这样做既简洁又比用 for 循环快得多。

47

如果你指的是“质心”,那就是把所有点的坐标取个平均值。

x = [p[0] for p in points]
y = [p[1] for p in points]
centroid = (sum(x) / len(points), sum(y) / len(points))

撰写回答