我有一个形状如下的数组
(N, 2)下面是我手头的一个2d数组的例子:
[[0,2]
[0,3]
[1,2]
[1,3]
[1,4]]
我想获得第二个索引中所有重复的值。在上面的例子中,我希望返回值2和3。
对于这种任务是否有特定的np函数?
似乎是np的反义词。唯一的,但我还没有找到一个工作函数为这个问题。
您可以在第二列上建立索引,并使用np.bincount
查找计数高于1
的索引:
a = np.array([[0,2],
[0,3],
[1,2],
[1,3],
[1,4]])
np.flatnonzero(np.bincount(a[:,1])>1)
# array([2, 3], dtype=int64)
或者对于大整数,np.unique
可能是更好的选择:
u, c = np.unique(a[:,1], return_counts=True)
u[c>1]
# array([2, 3])
您可能需要这样的内容:
arr = [[0,2],
[0,3],
[1,2],
[1,3],
[1,4]]
from collections import defaultdict
d = defaultdict(int)
for item in arr:
d[item[1]]+=1
for k, v in d.items():
if d[k] > 1:
print(k)
您可以使用来自集合的计数器来执行此任务。
z = np.array([[0,2],
[0,3],
[1,2],
[1,3],
[1,4]])
现在您可以遍历所需的索引以检查重复项。
from collections import Counter
dup = [item for item, count in Counter(z[:, 1]).items() if count > 1]
print(dup)
Out[12]: [2, 3]