关于如何执行此操作的总空白。
我有一个数组“points”和一个包含其中一些点的数组“a”:
points = numpy.array([[1,2],[4,0],[3,0],[2,4]])
a = numpy.array([[1,2], [3,0]])
如何获得([0,2])中点数“点”的指数,最好没有循环?
答案 0 :(得分:0)
这是一个O(n²)操作,并不意味着没有循环的直接方法。
以下解决方案适用于points
和a
的任意大小的2D变量。
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
中遗失的points
的值。
答案 1 :(得分:0)
对于很多点,请将a
放在scipy.spatial.cKDTree中,然后执行查询以查找距离a
最近的point
。
对于随机分布的点,这需要O(N ln N),参见Kd tree;
循环是cython,速度很快。