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
。 .
我有一个大型二维数组 (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
。