如何将数据集的相对频率保存为总和为1的列表?
数据集相对频率(总和为1)计算方案
你之前使用density=True得到的是概率密度,满足的是区间积分和为1,不符合离散频率和为1的需求,可根据使用场景选择以下两种实现:
- 场景1:需要和直方图分箱规则对应,输出每个分箱的相对频率
import numpy as np # 输入你的原始数据集 data = [3.481, 2.413, 4.682, ...] # bins参数可根据你的直方图分箱需求调整,比如设为固定数值、自定义区间列表均可 counts, bin_edges = np.histogram(data, bins=10) # 直接用分箱计数除以总样本数得到相对频率,总和为1 relative_freq = counts / counts.sum() # 可验证求和结果 print(relative_freq.sum()) # 输出为1.0
- 场景2:不需要分箱,需要输出每个唯一原始数值的对应出现频率
import numpy as np data = [3.481, 2.413, 4.682, 2.413, 3.481, ...] # 获取所有唯一值和对应出现次数 unique_vals, counts = np.unique(data, return_counts=True) # 计算相对频率 val_relative_freq = counts / counts.sum() # unique_vals中的每个元素和val_relative_freq中的元素按顺序一一对应 print(unique_vals) print(val_relative_freq)
内容的提问来源于stack exchange,提问作者user17029087
相关产品推荐
相关产品推荐

