27

我想获得由一组点创建的图形的中心点(x,y)。

我该怎么做呢?

4

3 回答 3

36

如果您的意思是质心,您只需得到所有点的平均值。

x = [p[0] for p in points]
y = [p[1] for p in points]
centroid = (sum(x) / len(points), sum(y) / len(points))
于 2010-12-04T21:27:54.427 回答
10

如果点集是positions大小为 N x 2 的 numpy 数组,则质心简单地由下式给出:

centroid = positions.mean(axis=0)

它将直接为您提供 2 个坐标 aa numpy 数组。

一般来说,numpy 数组可以以向量化的方式用于所有这些度量,与循环相比,这种方式紧凑且非常快速。for

于 2018-04-12T13:55:35.920 回答
8

我假设一个点是一个像 (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)
于 2010-12-04T21:32:07.973 回答