【问题标题】:Numpy count items in array and store in a dictionary [duplicate]Numpy计数数组中的项目并存储在字典中[重复]
【发布时间】:2020-10-12 16:58:15
【问题描述】:

假设我有多个这样的 numpy 数组:[1, 2, 4, 7, 1, 4, 6, 8, 1, 8, 2, 5]

我想统计每一项在数组中出现的次数,并将结果存入字典:

{1: 3, 2: 2, 3: 0, 4: 2, 5: 1, 6: 1, 7: 1, 8: 2}

有没有比简单地循环数组并计算项目并将它们存储在字典中更快的方法?

【问题讨论】:

标签: python arrays numpy dictionary count


【解决方案1】:

你可以在熊猫中做到这一点

>>> import pandas as pd
>>> a = pd.Series([1, 2, 4, 7, 1, 4, 6, 8, 1, 8, 2, 5])
>>> a.value_counts().to_dict()
{1: 3, 8: 2, 4: 2, 2: 2, 7: 1, 6: 1, 5: 1}

【讨论】:

    【解决方案2】:

    您可以使用 count 来做到这一点:

    MyList = [1, 2, 4, 7, 1, 4, 6, 8, 1, 8, 2, 5]
    my_dict = {i:MyList.count(i) for i in MyList}
    print(my_dict)
    

    这绝对有效 你会发现更多信息here

    我认为下面的方法是最简单的方法

    from collections import Counter
    MyList = [1, 2, 4, 7, 1, 4, 6, 8, 1, 8, 2, 5]
    print(Counter(MyList))
    

    输出将是 计数器({1:3, 2:2, 4:2, 8:2, 7:1, 6:1, 5:1})

    【讨论】:

    • 这确实有效。它也是 O(N^2) 。所以不要将它用于大量列表
    【解决方案3】:

    Numpy 有这样的功能:

    np.unique(x, return_counts=True)
    

    它不返回字典,但您可以轻松地将结果转换为字典。

    【讨论】:

    • 至少在这个小例子中,collections.Counter 更快。
    猜你喜欢
    • 2022-10-01
    • 2019-10-25
    • 2014-10-05
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 2021-06-21
    相关资源
    最近更新 更多