0

如何做到这一点完全空白。

我有一个数组“points”和一个包含其中一些点的数组“a”:

points = numpy.array([[1,2],[4,0],[3,0],[2,4]])
a = numpy.array([[1,2], [3,0]])

如何获得([0,2])中点的“点”中的索引,最好没有循环?

4

2 回答 2

0

这是一个 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

于 2011-11-04T14:02:50.053 回答
0

对于许多点,放入a一个scipy.spatial.cKDTree,然后进行查询以找到最接近a每个的点point。对于随机分布的点,这需要 O(N ln N),请参见Kd 树;循环在 cython 中,速度非常快。

于 2011-11-04T17:11:05.317 回答