我有一個 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
提交
取消