获取另一个numpy数组内的numpy数组的索引

时间:2019-06-20 08:52:13

标签: python numpy numpy-ndarray

我正在尝试在另一个numpy数组中获取numpy数组的索引,例如,我有

 y = array([1, 2, 3, 4, 5, 8])
 x = np.array([3, 1, 8]) 

x包含在y中,所以我要获取的是y数组上x数组的索引idx,并且顺序相同,因此这里是idx = array([2, 0, 5]),这样我们有np.array_equal(y[idx] ,x)个收益True, 我尝试使用np.argwhere(np.in1d(y,x)),但是显然我没有得到相同的顺序,我知道我总是可以使用列表推导idx = [ list(y).index(el) for el in x],但是我更喜欢使用numpy。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

来自Is there a NumPy function to return the first index of something in an array?

>>> t = array([1, 1, 1, 2, 2, 3, 8, 3, 8, 8])
>>> nonzero(t == 8)
(array([6, 8, 9]),)
>>> nonzero(t == 8)[0][0]
6

因此要适应您的情况:

lst=[]
for item in x:
    lst.append( list(nonzero(y == item)) )