2010-12-04 11 views
9

ポイントの集合によって作成された図形の中心点(x、y)を取得したいと考えています。Pythonを使用して点集合の中心を取得する方法

どうすればよいですか?

+5

「センター」を定義します。重心?セントロイド?他に何か? –

+0

これは数学に関連する質問によく似ています。私はこのexellentの本で考える:http://www.openbookproject.net/thinkcs/ 私はPythonまたは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の定理を使用する必要があります。 –

+0

@トーマスK:あなたは絶対に正しいです。 – Kabie

+0

これが何をしているのか理解しようとしています...なぜ、最大を最大に追加しますか? @コリンからの回答は私には意味がありますが、なぜこれも機能するのか分かりませんでした。 – Futile32

関連する問題