【发布时间】:2017-06-21 00:03:59
【问题描述】:
我有一个 numpy 数组,其中包含这样的坐标点
[[ 581 925]
[ 582 926]
[ 582 931]
[ 582 939]
[ 584 933]
[ 584 937]
[ 585 943]
[ 586 944]
[ 589 944]]
如您所见,有些点的 x 坐标相同但 y 坐标不同。 从第一个坐标开始,计算到下一个最近的直接坐标的距离。
例如,找出从[581 925] 到下一个最近坐标的距离。候选人是[ 582 926], [ 582 931] & [ 582 939],因为这些是最接近[581 925]的直接坐标。
在这种情况下很明显[582 926] 是最接近[581 925] 的坐标,我只希望该坐标存在并且删除其他2 个候选坐标。所以结果数组应该是
[[ 581 925]
[ 582 926]
.
.
.
[ 589 944]]
现在应该从[582 926]开始执行相同的操作,以此类推直到结束。
什么是最pythonic(最好是numpy)的方法,时间复杂度最低,因为它是最受关注的?
注意:线细化无关紧要,只需要删除不必要的点/坐标。
【问题讨论】:
-
能否请您指定要使用哪个距离度量来确定最近的坐标?
-
所以,基本上你想计算最近坐标之间的距离,最近的意思是那些距离较近的坐标?不先计算距离?
-
@Tristan Euclidean,我将使用
numpy.linalg.norm(a-b)来计算距离 -
@NAmorim 不,我想使用这些点绘制轮廓,并希望删除那些会阻止我绘制最佳轮廓的点。我会在问题中添加图片。
-
@NAmorim 由于拥有多个具有相同 x 轴值的点会创建一个粗而锯齿状的轮廓,我只想保留最接近前一个的点。