在 Python 中查找重复项的索引

bzo*_*oei 1 python indexing matrix duplicates numpy-ndarray

我有一个尺寸如下的二维 numpy-ndarray:(416,2)

[[10,10],[3,6],[2,4],[10,10],[0,0],[2,4],...] 等等

我需要找出是否有任何重复,如果有,它们在哪里。该副本本身的价值并不重要(即上面的例子将使:[0,2,3,5,...]

有没有办法做到这一点?谢谢你。

Par*_*ngh 7

如果您已经有一个 numpy 数组,则可以np.unique使用该return_inverse标志。使用逆数组查找唯一元素计数超过 1 的所有位置,并找到它们的索引。

import numpy as np
arr = np.array([[10,10],[3,6],[2,4],[10,10],[0,0],[2,4]])
vals, inverse, count = np.unique(arr,
                                 return_inverse=True,
                                 return_counts=True,
                                 axis=0)
out = np.where(count[inverse] > 1)[0] #find all indices where counts > 1
print(out) #array([0, 2, 3, 5], dtype=int64)
Run Code Online (Sandbox Code Playgroud)

  • @bzoei 接受的解决方案需要“O(n^2)”时间。我认为这比目前接受的答案更好。 (2认同)