代码之家  ›  专栏  ›  技术社区  ›  mj1261829

获取numpy数组中计数最大的每个值

  •  1
  • mj1261829  · 技术社区  · 8 年前

    x = [1,2,3,3,4,5,6,6,7,8]
    

    我需要以下输出:

    y = [3,6]
    

    因此,它与mode类似,但如果多个值具有相同的最大计数,则可以返回多个值。什么是有效的方法?谢谢。

    2 回复  |  直到 8 年前
        1
  •  4
  •   Daniel F    8 年前

    只是使用 np.unique return_counts = True

    u, c = np.unique(x, return_counts = True)
    y = u[c == c.max()]
    
        2
  •  1
  •   Warren Weckesser    8 年前

    x 只包含非负整数,如果 max(x) 不是太大,你可以用 numpy.bincount :

    In [230]: x = [1,2,3,3,4,5,6,6,7,8]
    
    In [231]: counts = np.bincount(x)
    
    In [232]: np.where(counts == counts.max())[0]
    Out[232]: array([3, 6])
    

    counts 会有长度 max(x)+1 最大值(x) 太大了,你可能不想用这个。

    这种方法比使用 numpy.unique