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

如何使用NumPy创建含0频率值的指定范围频数表?

解决NumPy创建包含0频率的频数表问题

给定NumPy观测数组:array([2, 5, 0, 1, 2, 1, 0, 0, 0, 1, 2, 3, 0]),需要为0到6的数值范围创建包含频率为0的数值的频数表,期望输出为array([[0., 1., 2., 3., 4., 5., 6.], [5., 3., 3., 1., 0., 1., 0.]])(第一个数组为指定范围的数值,第二个数组为对应计数)。使用np.unique(test2, return_counts=True)只能返回计数大于0的数值,无法满足需求。

以下是两种可行的解决方法:

方法一:利用np.bincount补全计数

np.bincount会自动统计输入数组中从0开始的非负整数的出现次数,通过设置minlength参数可以确保计数覆盖到目标范围的最大值(这里是6,所以minlength设为7,对应0-6共7个数值):

import numpy as np

test2 = np.array([2, 5, 0, 1, 2, 1, 0, 0, 0, 1, 2, 3, 0])
# 统计0到6的频数,minlength确保长度覆盖到7个数值
counts = np.bincount(test2, minlength=7)
# 生成0到6的数值范围数组
values = np.arange(0, 7)
# 组合成目标格式的数组,转换为float类型匹配期望输出
result = np.array([values, counts], dtype=np.float64)
print(result)

运行后输出:

array([[0., 1., 2., 3., 4., 5., 6.],
       [5., 3., 3., 1., 0., 1., 0.]])

方法二:使用np.histogram指定区间

通过np.histogram设置精确的区间,让每个区间对应一个目标数值,从而直接得到全范围的计数:

import numpy as np

test2 = np.array([2, 5, 0, 1, 2, 1, 0, 0, 0, 1, 2, 3, 0])
# 设置bins为0到8,每个区间对应单个整数(如[0,1)对应0,[6,7)对应6)
counts, bins = np.histogram(test2, bins=np.arange(0, 8))
# bins的最后一个元素是7,取前7个作为0到6的数值范围
values = bins[:-1]
# 组合成目标格式
result = np.array([values, counts], dtype=np.float64)
print(result)

该方法同样能输出符合要求的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 13:55:15