我有两个numpy数组A和B。A包含唯一值,而B是A的子数组。现在,我正在寻找一种方法来获取A中B的值的索引。
例如:
A = np.array([1,2,3,4,5,6,7,8,9,10])
B = np.array([1,7,10])
# I need a function fun() that:
fun(A,B)
>> 0,6,9
您可以使用np.in1d
带有np.nonzero
-
np.nonzero(np.in1d(A,B))[0]
np.searchsorted
如果您关心维护订单,也可以使用-
np.searchsorted(A,B)
对于一般情况,当A
&B
是未排序的数组时,您可以在中引入sorter
选项np.searchsorted
,就像这样-
sort_idx = A.argsort()
out = sort_idx[np.searchsorted(A,B,sorter = sort_idx)]
broadcasting
为了解决一般情况,我还会添加我最喜欢的内容-
np.nonzero(B[:,None] == A)[1]
样品运行-
In [125]: A
Out[125]: array([ 7, 5, 1, 6, 10, 9, 8])
In [126]: B
Out[126]: array([ 1, 10, 7])
In [127]: sort_idx = A.argsort()
In [128]: sort_idx[np.searchsorted(A,B,sorter = sort_idx)]
Out[128]: array([2, 4, 0])
In [129]: np.nonzero(B[:,None] == A)[1]
Out[129]: array([2, 4, 0])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句