【问题标题】:Determine number of preceding equal elements确定前面相等元素的数量
【发布时间】:2021-07-01 01:58:40
【问题描述】:

使用numpy,给定一个已排序的一维数组,如何有效地获得一个大小相等的一维数组,其中每个位置的值是前面相等元素的个数?我有非常大的数组,并且以一种或另一种方式处理 Python 代码中的每个元素是不可接受的。

例子:

input  = [0, 0, 4, 4, 4, 5, 5, 5, 5, 6]
output = [0, 1, 0, 1, 2, 0, 1, 2, 3, 0]

【问题讨论】:

    标签: numpy


    【解决方案1】:
    import numpy as np
    A=np.array([0, 0, 4, 4, 4, 5, 5, 5, 5, 6])
    uni,counts=np.unique(A, return_counts=True)
    out=np.concatenate([np.arange(n) for n in counts])
    print(out)
    

    不确定效率(可能是形成out 数组而不是连接的更好方法),但是一种非常直接的方法来获得您正在寻找的结果。对唯一元素进行计数,然后对每个计数执行np.arange 以获得升序,然后将这些数组连接在一起。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-23
      • 2015-05-21
      • 2012-11-09
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 2016-10-28
      • 2015-01-03
      相关资源
      最近更新 更多