2010-12-04 4 views
9

का उपयोग कर अंक के सेट का केंद्र कैसे प्राप्त करें I अंक के एक सेट द्वारा बनाई गई आकृति का केंद्र बिंदु (x, y) प्राप्त करना चाहते हैं।पायथन

मैं यह कैसे कर सकता हूं?

+5

"केंद्र" परिभाषित करें। ग्रैविटी केंद्र? केन्द्रक? कुछ और? –

+0

यह गणित से संबंधित प्रश्न की तरह है। मुझे लगता है कि इस उत्कृष्ट पुस्तक में: http://www.openbookproject.net/thinkcs/ मुझे याद नहीं है कि पाइथन या सी ++ में, आप जो हासिल करने की कोशिश कर रहे हैं उसके कुछ उदाहरण हैं। – 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

लेकिन पाइथन 2.x में पूर्णांक विभाजन से सावधान रहें: यदि प्रत्येक बिंदु में एक पूर्णांक x मान होता है, तो आपके सेंट्रॉइड का एक्स मान पूर्णांक तक गोल हो जाएगा। '__future__ आयात प्रभाग से 'का उपयोग करें, स्पष्ट रूप से विभाजन से पहले एक फ्लोट में कनवर्ट करें, या पायथन 3. –

+5

का उपयोग करें यदि' पॉइंट' एक द्वि-आयामी नम्पी सरणी है, तो आप शायद 'points.mean (0)' का उपयोग कर सकते हैं। – Philipp

+0

धन्यवाद यह वही है जो मैं चाहता था। –

5

मुझे लगता है कि एक बिंदु एक tuple (x, y) है।

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

में अधिकतम + मिनट नहीं होना चाहिए, अधिकतम - न्यूनतम नहीं? –

+0

@ थॉमस के: आप बिल्कुल सही हैं। – Kabie

+0

यह समझने की कोशिश कर रहा है कि यह क्या कर रहा है ... हम न्यूनतम को न्यूनतम क्यों जोड़ते हैं? @colin का उत्तर मुझे समझ में आता है, लेकिन यह सुनिश्चित नहीं था कि यह भी क्यों काम करता है। – Futile32