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

如何简便统计NumPy数组中指定元素的出现次数?

高效统计NumPy数组中元素出现次数的方法

当然有超简便的方法!针对NumPy数组(尤其是你提到的大型数组),完全不用手动遍历统计,NumPy本身就提供了高效的矢量化工具,既省代码又跑得快。

方法1:一次性统计所有元素的出现次数(最推荐)

用np.unique()函数,它可以直接返回数组里的所有唯一元素,以及每个元素对应的出现次数,特别适合需要全局统计的场景:

import numpy as np

# 你的原始数组
garden = [['F', 'F', 'W', 'W'], ['F', '_', '_', 'W'], ['G', '_', '_', 'J'], ['G', 'G', 'J', 'J']]
farm = np.array(garden)

# 获取唯一元素和对应计数
unique_elements, counts = np.unique(farm, return_counts=True)

# 转成字典更方便查看
element_counts = dict(zip(unique_elements, counts))
print(element_counts)
# 输出结果:{'_': 4, 'F': 3, 'G': 3, 'J': 3, 'W': 3}

这个方法的优势在于:矢量化操作,处理大型数组的速度比Python循环快几个数量级,而且一次性拿到所有元素的统计结果,不用重复操作。

方法2:单独统计某个特定元素的次数

如果你只关心某一个元素(比如只查'F'的数量),可以用布尔索引配合求和,或者np.count_nonzero(),两种方法效率差不多:

# 方式A:布尔数组求和(NumPy中True等价于1,False等价于0)
f_count = (farm == 'F').sum()
print(f_count)  # 输出:3

# 方式B:用np.count_nonzero直接统计符合条件的元素数量
f_count = np.count_nonzero(farm == 'F')
print(f_count)  # 输出:3

小提醒

如果是处理超大型数组,尽量避免把NumPy数组转成Python列表后用collections.Counter统计——转列表会额外占用内存,而且统计效率远不如NumPy的原生方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:06:25