多くのオプションがあります。ポリゴンを考えてみましょう。ほとんどのGISプログラムの最初と最後の点は、多角形のような「」上記ためDTYPEは簡単のfloat64ある
import numpy as np
a = np.array([[0., 0.], [0., 1000.], [1000., 1000.], [1000., 0.], [ 0., 0.]])
a
array([[ 0., 0.],
[ 0., 1000.],
[ 1000., 1000.],
[ 1000., 0.],
[ 0., 0.]])
をnumpyの使用下に、クロージャを形成するために繰り返されます。あなたは次のように適切なデータ型を割り当てることによって、構造化された配列に変換することができます
b = np.zeros((a.shape[0]), dtype=[('Xs', '<f8'), ('Ys', '<f8')])
b['Xs'] = a[:,0]; b['Ys'] = a[:,1]
b
array([(0.0, 0.0), (0.0, 1000.0), (1000.0, 1000.0), (1000.0, 0.0), (0.0, 0.0)],
dtype=[('Xs', '<f8'), ('Ys', '<f8')])
あなたはさらに一歩進めて、あなたのオブジェクトとobject.property表記法を使用することを好む場合は、「recarray」を生成することができます。均一なDTYPEと標準配列で
c = b.view(np.recarray)
、あなたはあなたがオブジェクトを使用することができますrecarrayで、最終的には列名によってスライス、および能力を追加し、構造配列と、スライスを使用してXの値にアクセスすることができます。プロパティ表記法。
args = [a[:,0], b['Xs'], c.Xs] # ---- get the X coordinates
print('{}\n{}\n{}'.format(*args))
[ 0. 0. 1000. 1000. 0.]
[ 0. 0. 1000. 1000. 0.]
[ 0. 0. 1000. 1000. 0.]
あなたは、アレイ内の固有の点からポリゴンの重心を取得することができます。..
np.mean(a[:-1], axis=0)
array([ 500., 500.])
実際には右のフォーム
np.unique(b)
array([(0.0, 0.0), (0.0, 1000.0), (1000.0, 0.0), (1000.0, 1000.0)],
dtype=[('Xs', '<f8'), ('Ys', '<f8')])
指定された配列からのユニークなポイントを獲得することは容易です
あなたは、従来のndarray、名前付きフィールドと再配列を持つものの間を行き来していることに気づいたかもしれません。これは、同じデータを使用し、必要に応じてさまざまな方法で見ることができるからです。
私の直感はタプルが正しく聞こえるとも言っていましたが、私は(a)マップ/オペレータのようなものを知らず、(b)あなたが言うように、しかし、私はtuple_coord [0] = 12を行うことができません。しかし、私はこの不都合な点が、それらが関連している座標の性質を反映していると考え始めています。もう片方。 – levraininjaneer