Python 求数值在给定集合中的numpy向量的所有索引

Python 求数值在给定集合中的numpy向量的所有索引,python,numpy,Python,Numpy,我越来越习惯于numpy奇特的索引可能性,但这次我遇到了一个障碍,如果不使用丑陋的for循环,我就无法解决 我的输入是一对向量,一个大向量v和一个小向量e。我想要的是找到所有的索引I,其中v[I]等于v[e[0]]、v[e[1]]、…v[e[n]。目前,为我做这件事的代码是 如果e只是一个数字,我可以这样做: rr = np.arange(n) r = v[rr] == v[e] 这比for循环更好更快。当e不是一个数字时,有没有办法做到这一点?您可以使用和: 您可以使用和: 您可以使用和:

我越来越习惯于
numpy
奇特的索引可能性,但这次我遇到了一个障碍,如果不使用丑陋的for循环,我就无法解决

我的输入是一对向量,一个大向量
v
和一个小向量
e
。我想要的是找到所有的索引
I
,其中
v[I]
等于
v[e[0]]、v[e[1]]、…v[e[n]
。目前,为我做这件事的代码是

如果
e
只是一个数字,我可以这样做:

rr = np.arange(n)
r = v[rr] == v[e]
这比for循环更好更快。当
e
不是一个数字时,有没有办法做到这一点?

您可以使用和:

您可以使用和:

您可以使用和:

您可以使用和:


正是我所需要的。非常感谢,这正是我需要的。非常感谢,这正是我需要的。非常感谢,这正是我需要的。多谢各位。
rr = np.arange(n)
r = v[rr] == v[e]
>>> v = np.array([0,0,0,0,1,1,1,2,2,2,2,2,2])
>>> e = [0,4]
>>> np.in1d(v, v[e])
array([ True,  True,  True,  True,  True,  True,  True, False, False,
       False, False, False, False], dtype=bool)
>>> np.where(np.in1d(v, v[e]))
(array([0, 1, 2, 3, 4, 5, 6]),)
>>> np.where(np.in1d(v, v[e]))[0]
array([0, 1, 2, 3, 4, 5, 6])