【问题标题】:Find duplicate values in a 2D array column在二维数组列中查找重复值
【发布时间】:2021-06-09 07:43:46
【问题描述】:

我有一个形状如下的数组

(N, 2) 下面是我手头的二维数组的示例:

[[0,2]
[0,3]
[1,2]
[1,3]
[1,4]]

我想获取第二个索引中具有重复项的所有值。 在上面的示例中,我希望返回值 2 和 3。

这类任务有特定的 np 函数吗?

这似乎与 np.unique 相反,但我还没有找到解决这个问题的工作函数。

【问题讨论】:

标签: python arrays numpy


【解决方案1】:

您可以对第二列进行索引并使用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])

【讨论】:

    【解决方案2】:

    你可能需要这样的东西:

       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)
    

    【讨论】:

      【解决方案3】:

      您可以使用集合中的计数器来执行此任务。

      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]
      

      【讨论】:

        猜你喜欢
        • 2021-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-01
        • 2013-10-17
        • 2020-07-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多