gpt4 book ai didi

python - 计算 python collections.Counter 中值的平均值

转载 作者:太空狗 更新时间:2023-10-30 00:44:08 24 4
gpt4 key购买 nike

我正在分析一些非常紧密地聚集在一起的数字时间测量值。我想获得均值、标准差等。有些输入很大,所以我想我可以避免创建数百万个数字的列表,而是使用 Python collections.Counter 对象作为紧凑的表示。

示例:我的一个小输入产生一个 collection.Counter,如 [(48, 4082), (49, 1146)],这意味着该值出现了 4,082 次值 49 出现了 48 次和 1,146 次。对于这个数据集,我手动计算平均值类似于 48.2192042846。

当然,如果我有一个包含 4,082 + 1,146 = 5,228 个整数的简单列表,我会直接将它提供给 numpy.mean()。

我的问题:如何根据 collections.Counter 对象中的值计算描述性统计数据,就像我有一个数字列表一样?我必须创建完整列表还是有快捷方式?

最佳答案

collections.Counter()dict 的子类。只需使用 Counter().values() 获取计数列表,您就可以使用标准库 staticstics.mean() function

import statistics

counts = Counter(some_iterable_to_be_counted)
mean = statistics.mean(counts.values())

请注意,我没有在这里调用Counter.most_common(),它会生成(key, count)元组列表发布在您的问题中。

如果您必须使用 Counter.most_common() 的输出,您可以使用生成器表达式过滤掉计数:

mean = statistics.mean(count for key, count in most_common_list)

如果您打算计算按计数加权的平均键值,您可以直接根据计数器值进行自己的计算:

mean = sum(key * count for key, count in counter.items()) / counter.total())

注意:我使用了Counter.total()在那里,这是 Python 3.10 中的新功能。在旧版本中。使用 sum(counter.values())

对于中位数,使用 statistics.median() :

import statistics

counts = Counter(some_iterable_to_be_counted)
median = statistics.median(counts.values())

或者,对于 key * value:

median = statistics.median(key * count for key, count in counts.items())

关于python - 计算 python collections.Counter 中值的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33695220/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com