如何使用Python获得点集的中心

Dom*_*opa 20 python matplotlib triangulation

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

我该怎么做呢?

Col*_*lin 27

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

x = [p[0] for p in points]
y = [p[1] for p in points]
centroid = (sum(x) / len(points), sum(y) / len(points))
Run Code Online (Sandbox Code Playgroud)

  • 如果`points`是一个二维Numpy数组,你可以使用`points.mean(0)`. (7认同)
  • 那不是质心,只是积分的平均值.如果要计算质心,则必须对离散段使用格林定理,如https://en.wikipedia.org/wiki/Centroid#Centroid_of_polygon (5认同)
  • 但要注意Python 2.x中的整数除法:如果每个点都有一个整数x值,则质心的x值将向下舍入为整数.使用`from __future__ import division`,在分割之前显式转换为float,或者使用Python 3. (4认同)

Kab*_*bie 6

我假设一个点是像(x,y)这样的元组.

x,y=zip(*points)
center=(max(x)+min(x))/2., (max(y)+min(y))/2.
Run Code Online (Sandbox Code Playgroud)

  • 另一个注意事项:这个中心和另一个答案不是同一个中心 - 对于多边形,有多个“中心”公式 https://en.wikipedia.org/wiki/Centroid (2认同)

med*_*duz 6

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

centroid = positions.mean(axis=0)
Run Code Online (Sandbox Code Playgroud)

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

通常,numpy 数组可以以矢量化方式用于所有这些度量,与循环相比,这种方式紧凑且非常快速for