2010-12-04 65 views
9

Me gustaría obtener el punto central (x, y) de una figura creada por un conjunto de puntos.Cómo obtener el centro del conjunto de puntos usando Python

¿Cómo puedo hacer esto?

+5

Definir "centro". ¿Centro de gravedad? Centroide? ¿Algo más? –

+0

Esto es más como una pregunta relacionada con las matemáticas. Creo que en este excelente libro: http://www.openbookproject.net/thinkcs/ No recuerdo si en Python o C++, hay algunos ejemplos de lo que estás tratando de lograr. – mRt

Respuesta

14

Si quiere decir centroide, solo obtiene el promedio de todos los puntos.

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

Pero tenga cuidado con la división de enteros en Python 2.x: si cada punto tiene un valor x entero, el valor x de su centroide se redondeará a un número entero. Use 'from __future__ import division', conviértase explícitamente en float antes de la división, o use Python 3. –

+5

Si' points' es una matriz Numpy bidimensional, probablemente pueda simplemente usar 'points.mean (0)'. – Philipp

+0

Gracias, esto es lo que quería. –

5

Supongo que un punto es una tupla como (x, y).

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

¿No debería ser max + min, no max - min? –

+0

@Thomas K: Tiene toda la razón. – Kabie

+0

tratando de entender lo que está haciendo ... ¿por qué 'agregamos' el min al máximo? La respuesta de @colin tiene sentido para mí, pero no estaba seguro de por qué esto también funciona. – Futile32

Cuestiones relacionadas