Python - 在数组中查找对应关系

Python - Find correspondence in an array

我有一个大型二维数组 (3x100,000) 的 3D 坐标和第二个具有某些未排序坐标的一维数组。我想找到所有坐标包含在第二个数组中的点

一个例子:

mat1 = np.array([[1,2,3],[1,2,5],[2,3,6],[10,11,12],[20,2,3]])

mat2 = np.array([1,2,3,6])

所以这里我需要获取0和2的索引,并且我需要在大约100,000个坐标上找到每个对应关系。 Python 中是否有特定函数来完成这项工作?

总结一下我的情况:

最简单的方法是 np.isin -

# a,b are input arrays - mat1,mat2 respectively
In [7]: np.flatnonzero(np.isin(a,b).all(1))
Out[7]: array([0, 2])

另一个 np.searchsorted -

In [19]: idx = np.searchsorted(b,a)

In [20]: idx[idx==len(b)] = 0

In [21]: np.flatnonzero((b[idx]==a).all(1))
Out[21]: array([0, 2])

如果 b 未按排序顺序使用 np.argsort(b) 作为 sorter arg with np.searchsorted.