如何实现类似numpy.bincount的功能以统计0-1区间浮点数的频次?
处理0-1浮点数的频次统计替代方案
由于np.bincount仅支持整数类型,针对0到1之间的浮点数,可通过以下几种方式实现类似的频次统计功能:
方法1:用np.unique直接统计唯一值频次
np.unique支持浮点数输入,能同时返回数组中的唯一值和对应出现次数:
import numpy as np arr = np.array([0.91, 0.74, 1.0, 0.89, 0.91, 0.74]) values, counts = np.unique(arr, return_counts=True) print("唯一值:", values) print("对应频次:", counts)
输出结果:
唯一值: [0.74 0.89 0.91 1. ] 对应频次: [2 1 2 1]
方法2:用pandas.value_counts实现灵活统计
如果项目已引入pandas,value_counts可以直接输出频次,还支持排序、归一化等扩展操作:
import pandas as pd arr = np.array([0.91, 0.74, 1.0, 0.89, 0.91, 0.74]) count_result = pd.value_counts(arr) print(count_result)
输出结果:
0.74 2 0.91 2 0.89 1 1.00 1 dtype: int64
方法3:分箱统计(按区间聚合频次)
若需要将0-1范围内的浮点数划分成连续区间统计频次(类似整数版bincount的区间统计逻辑),可以使用np.histogram:
import numpy as np arr = np.array([0.91, 0.74, 1.0, 0.89, 0.91, 0.74]) # 把0-1划分为4个等宽区间,返回各区间的频次和边界 counts, bin_edges = np.histogram(arr, bins=4, range=(0, 1)) print("区间边界:", bin_edges) print("各区间频次:", counts)
输出结果:
区间边界: [0. 0.25 0.5 0.75 1. ] 各区间频次: [0 0 2 4]
内容的提问来源于stack exchange,提问作者maximus
相关产品推荐
相关产品推荐

