You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何简便统计分类值各元素的出现频次?附示例

在Python中统计分类值元素出现频次的简便方法

当然有啦!针对你给出的numpy数组场景,我整理了几个实用又简便的实现方式,完全可以满足你的需求:

方法1:利用numpy原生工具实现

numpy本身就提供了np.unique函数,可以一次性获取数组中的唯一值和对应的出现次数,再通过映射关系得到每个元素的频次:

import numpy as np

x = np.array(['a', 'b', 'a', 'b', 'b', 'u'])
# 获取唯一值及对应计数
values, counts = np.unique(x, return_counts=True)
# 创建值到计数的映射字典
count_mapping = dict(zip(values, counts))
# 用vectorize快速映射每个元素的计数
result = np.vectorize(lambda val: count_mapping[val])(x)
print(result.tolist())  # 输出: [2, 3, 2, 3, 3, 1]

方法2:用collections.Counter快速实现

如果喜欢更Pythonic的写法,collections模块里的Counter类简直是为这类计数需求量身打造的,代码更简洁直观:

from collections import Counter
import numpy as np

x = np.array(['a', 'b', 'a', 'b', 'b', 'u'])
# 统计所有元素的出现次数
count_counter = Counter(x)
# 遍历原数组,逐个取出对应元素的计数
result = [count_counter[val] for val in x]
print(result)  # 输出: [2, 3, 2, 3, 3, 1]

方法3:借助pandas处理大数据场景

如果你的数据集规模较大,用pandas的效率会更高,而且代码同样简洁:

import pandas as pd
import numpy as np

x = np.array(['a', 'b', 'a', 'b', 'b', 'u'])
# 转换为pandas Series
s = pd.Series(x)
# 获取每个值的出现次数
value_counts = s.value_counts()
# 映射回原Series得到结果
result = s.map(value_counts).tolist()
print(result)  # 输出: [2, 3, 2, 3, 3, 1]

小提示

  • 小数据集场景下,Counter的写法最简洁易懂;
  • 大数据量时,numpy或pandas的实现效率更高,尤其是numpy的vectorize操作,性能表现更优。

内容的提问来源于stack exchange,提问作者Elizaveta Isachenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:51:27