次のように、ポリライン (接続された直線セグメントの順序付きリスト) を記述する配列があります。
points = ((0,0),
(1,2),
(3,4),
(6,5),
(10,3),
(15,4))
points = numpy.array(points, dtype=float)
現在、次のループを使用してセグメント距離のリストを取得しています。
segdists = []
for seg in xrange(points.shape[0]-1):
seg = numpy.diff(points[seg:seg+2], axis=0)
segdists.append(numpy.linalg.norm(seg))
代わりに、ネイティブの Scipy/Numpy 関数を使用して、ループなしで単一の関数呼び出しを適用したいと思います。
私が得ることができる最も近いものはこれです:
from scipy.spatial.distance import pdist
segdists = pdist(points, metric='euclidean')
しかし、この後者の場合、segdists はすべての距離を提供し、隣接する行間の距離のみを取得したいと考えています。
また、カスタム関数を作成することは避けたいと思います (既に機能するソリューションがあるため)。代わりに、ネイティブ関数をより「numpythonic」に使用します。