Python 比较2数组并返回相同值的索引

Python 比较2数组并返回相同值的索引,python,numpy,Python,Numpy,例如,如果我有一个大数组和一个小数组 A = np.array([1,2,3]) B = np.array([3,4,5,6,7,8,2,1]) 我可以使用np.intersect1d获得相同的值, 但是,如果我想得到相同值的索引(在大数组B中),例如,它应该是[0,6,7],有什么命令可以得到它吗?你可以使用np.inad()得到一个布尔数组,表示a的项出现在B中的位置,然后使用np.where()或np.argwhere()函数您可以获得真实项目的索引: In [8]: np.where(

例如,如果我有一个大数组和一个小数组

A = np.array([1,2,3])
B = np.array([3,4,5,6,7,8,2,1])
我可以使用
np.intersect1d
获得相同的值, 但是,如果我想得到相同值的索引(在大数组B中),例如,它应该是
[0,6,7]
,有什么命令可以得到它吗?

你可以使用
np.inad()
得到一个布尔数组,表示
a
的项出现在
B
中的位置,然后使用
np.where()
np.argwhere()
函数您可以获得真实项目的索引:

In [8]: np.where(np.in1d(B, A))[0]
Out[8]: array([0, 6, 7])

或者如注释
np.in1d(B,A).nonzero()[0]
中所述。然而,你想在这里选择的方式很大程度上取决于你的程序的重置以及你想在哪里/如何使用结果。此外,您可以在短数组和大数组中的所有方法上运行基准测试,以查看哪种方法更适合于哪种情况。

或者可能是
np.in1d(B,A).nonzero()[0]
@coldspeed-Sure,添加到答案中。