当前位置: 首页 > 知识库问答 >
问题:

最有效的字典计数器

钱华晖
2023-03-14

我正在为通用的“字典计数器”寻找更有效的实现。目前,这个简单的函数比集合产生更快的结果。反执行

def uniqueCounter(x):
    dx = defaultdict(int)
    for i in x:
        dx[i] += 1
    return dx

编辑:一些特征样本输入:

c1= zip(np.random.randint(0,2,200000),np.random.randint(0,2,200000))
c2= np.random.randint(0,2,200000)

c1: 
uniqueCounter timing: 
10 loops, best of 3: 61.1 ms per loop
collections.Counter timing:
10 loops, best of 3: 113 ms per loop 

c2:
uniqueCounter timing: 10 loops, best of 3: 57 ms per loop
collections.Counter timing: 10 loops, best of 3: 120 ms per loop

共有1个答案

丁俊爽
2023-03-14

尝试使用numpy。宾克数

In [19]: Counter(c2)
Out[19]: Counter({1: 100226, 0: 99774})

In [20]: uniqueCounter(c2)
Out[20]: defaultdict(<type 'int'>, {0: 99774, 1: 100226})

In [21]: np.bincount(c2)
Out[21]: array([ 99774, 100226])

一些时间安排:

In [16]: %timeit np.bincount(c2)
1000 loops, best of 3: 2 ms per loop

In [17]: %timeit uniqueCounter(c2)
1 loops, best of 3: 161 ms per loop

In [18]: %timeit Counter(c2)
1 loops, best of 3: 362 ms per loop
 类似资料:
  • 问题内容: 组织以下pandas数据框的最有效方法是什么: 数据= 变成字典一样? 问题答案: In [9]: pd.Series(df.Letter.values,index=df.Position).to_dict() Out[9]: {1: ‘a’, 2: ‘b’, 3: ‘c’, 4: ‘d’, 5: ‘e’} 速度比较(使用Wouter方法)

  • 以上是我通过json得到的,我需要将值分配给UITableView: 它返回0行,我是ios新手请帮助我如何将这些值分配给uitableview。 当做

  • 问题内容: 在 /中 ,是否有一种 有效的 方法来获取数组中唯一值的频率计数? 遵循以下原则: (对于您来说,R用户在那里,我基本上是在寻找该功能) 问题答案: 看一下: http://docs.scipy.org/doc/numpy/reference/generated/numpy.bincount.html 接着: 要么: 或者您想将计数和唯一值结合起来。

  • 在/中,是否有一种有效的方法来获取数组中唯一值的频率计数? 大致如下: (对于R用户来说,我基本上是在寻找函数)

  • 问题内容: 如何从字典中检索前3个列表? 预期结果: 问题答案: 用途: 计数器对象还具有其他各种优点,例如,使收集计数变得非常简单。

  • 我试图解决这个面试问题。我的代码针对测试用例运行,但对于所有实际输入测试用例都失败。我努力寻找错误,但无法做到。请在问题下方找到我的代码 鲍勃非常喜欢分类。他总是在想新的方法来对数组进行排序。他的朋友拉姆给了他一项艰巨的任务。他给了Bob一个数组和一个整数K。挑战是在最多K-swap之后生成字典序最小数组。只能交换连续的元素对。帮助Bob在最多K-swap之后返回字典序最小数组。 输入:第一行包含