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

时间:2018-09-18 06:25:33

标签: 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],是否有任何命令来获取它?

1 个答案:

答案 0 :(得分:1)

您可以使用np.in1d()获取一个布尔数组,该数组代表A项在B中出现的位置,然后使用np.where()np.argwhere()函数您可以获取True项目的索引:

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

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