我有两个NumPy数组。例如:

arr1 = np.array(['a','b','a','c','c','b','a','d'])
arr2 = np.array(['a','b','c','d'])


我的任务是创建arr2数组的索引列表,其中arr1 == arr2

所需列表的长度应等于len(arr1)。例如,在我的情况下,正确答案是[0,1,0,2,2,1,0,3]

做这件事的捷径是什么?是否可以在此处使用列表理解?

最佳答案

不确定numpy是否具有此方法,但是这是一种内置方法,需要花费O(N)的时间:

In [9]: lookup = {v:i for i, v in enumerate(arr2)}

In [10]: [lookup[v] for v in arr1]
Out[10]: [0, 1, 0, 2, 2, 1, 0, 3]

关于python - NumPy数组交集的索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22203987/

10-12 21:31