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

2024-05-19 13:08:34 发布

您现在位置:Python中文网/ 问答频道 /正文

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

A = np.array([1,2,3])
B = np.array([3,4,5,6,7,8,2,1])

我可以用np.intersect1d得到相同的值, 但是如果我想得到相同值的索引(在大数组B中),比如这个例子,它应该是[0,6,7],是否有任何命令可以得到它?你知道吗


Tags: 命令np数组array例子intersect1d
1条回答
网友
1楼 · 发布于 2024-05-19 13:08:34

您可以使用np.in1d()来获得表示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]所述。然而,你想在这里选择的方式在很大程度上取决于你的程序重置和你想在哪里/如何使用结果。此外,您可以在短数组和大数组中的所有方法上运行基准测试,以查看哪种方法更适合于哪种情况。你知道吗

相关问题 更多 >