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

如何使用Numpy高效统计指定范围内所有整数的出现频次?

Numpy统计指定整数范围元素频次的实现方案

我们可以直接用Numpy内置的np.bincount()方法实现需求,它是专门用于统计非负整数数组频次的原生接口,时间复杂度为O(n),比np.unique的实现效率更高,也不需要手动补全缺失值。

实现代码

import numpy as np

def count(ar, from_val, to_val):
    # from是Python保留关键字,因此参数名用from_val替代
    # 统计从0到数组最大值的所有整数出现频次
    full_counts = np.bincount(np.asarray(ar))
    # 初始化指定长度的结果数组,默认填充0
    res = np.zeros(to_val - from_val, dtype=full_counts.dtype)
    # 计算有效计数的上下界
    start = max(from_val, 0)
    end = min(to_val, len(full_counts))
    # 将有效计数赋值到结果数组对应位置
    if end > start:
        res[start - from_val : end - from_val] = full_counts[start:end]
    return res.tolist()

调用测试

对应示例的调用代码如下:

count(ar=[1, 3, 0, 3, 1, 1], from_val=0, to_val=4)

返回结果为[1, 3, 0, 2],完全符合预期。

拓展场景

如果需要统计的范围包含负数,只需要先对数组做偏移处理,把所有元素平移到非负区间再统计即可。比如要统计-2到3的频次,就给数组所有元素加2,将数值范围映射到0到5,再走上述逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 10:36:01