我有一个 3D 坐标的大型 2D 数组 (3x100,000) 和一个具有某些未排序坐标的第二个 1D 数组。我想找到第二个数组中包含的坐标的所有点一个例子: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中有一个特定的函数来完成这项工作吗?总结一下我的情况:https://i.stack.imgur.com/L4nYx.png
1 回答
FFIVE
TA贡献1797条经验 获得超6个赞
最简单的方法是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)as sorterarg 和np.searchsorted. More info.
添加回答
举报
0/150
提交
取消
