如何做到这一点完全空白。
我有一个数组“points”和一个包含其中一些点的数组“a”:
points = numpy.array([[1,2],[4,0],[3,0],[2,4]])
a = numpy.array([[1,2], [3,0]])
如何获得([0,2])中点的“点”中的索引,最好没有循环?
这是一个 O(n²) 操作,并不意味着有一个没有循环的直接方法。
以下解决方案适用于 和 的任何大小的二维points
变量a
。
import numpy as np
points = np.array([[1,2],[4,0],[3,0],[2,4]])
a = np.array([[1,2], [3,0]])
np.array([np.argwhere((points==a[i]).all(axis=1))[0][0] for i in xrange(a.shape[0])])
# returns array([0, 2])
但是,这不适用于a
缺失 from的值points
。
对于许多点,放入a
一个scipy.spatial.cKDTree,然后进行查询以找到最接近a
每个的点point
。对于随机分布的点,这需要 O(N ln N),请参见Kd 树;循环在 cython 中,速度非常快。