2010-12-04 3 views
9

점 집합으로 만들어진 그림의 중심점 (x, y)을 얻고 싶습니다.Python을 사용하여 점 집합의 중심을 얻는 방법

어떻게해야합니까?

+5

"센터"를 정의하십시오. 중심? 센트 로이드? 다른 것? –

+0

이것은 수학과 관련된 질문과 같습니다. 나는이 exellent 책에서 생각한다. http://www.openbookproject.net/thinkcs/ 파이썬이나 C++에서 기억하고있는 것을 기억하지 못한다. 달성하고자하는 것에 대한 몇 가지 예가있다. – mRt

답변

14

무게 중심을 의미하는 경우 모든 점의 평균값을 얻게됩니다.

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

그러나 Python 2.x에서 정수 나누기에주의하십시오. 모든 점에 정수 x 값이 있으면 중력의 x 값이 정수로 반올림됩니다. 'from __future__ import division'을 사용하거나, 나누기 전에 명시 적으로 float로 변환하거나, Python 3을 사용하십시오. –

+5

'points'가 2 차원 Numpy 배열이면, 아마도'points.mean (0)'을 사용할 수 있습니다. – Philipp

+0

감사합니다. 내가 원했던 것입니다. 중심이 아닌 –

5

점이 (x, y)와 같은 튜플이라고 가정합니다.

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

에서와 같이 개별 세그먼트에 대해 Green의 정리를 사용해야합니다. max + min이 아닌 max-min이어야합니다. –

+0

@ 토마스 K : 당신은 절대적으로 맞습니다. – Kabie

+0

이 작업이 무엇을하는지 이해하려고 시도하는 이유는 무엇입니까? 왜 max를 max에 '추가합니까'? @colin의 대답은 나에게 의미가 있지만, 왜 이것이 작동하는지 잘 모르겠습니다. – Futile32

관련 문제