【发布时间】:2012-11-15 10:37:56
【问题描述】:
我有一个数组,它描述了一条折线(连接的直线段的有序列表),如下所示:
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”原生函数。
【问题讨论】:
标签: python numpy scipy euclidean-distance