Python中使用numpy.histogram时如何控制bin的大小
numpy控制直方图分箱的方法
np.histogram 直接通过内置的bins参数即可实现分箱大小、数量、规则的自定义,你当前用的默认配置是生成10个等宽分箱,常见的控制方式如下:
- 指定固定分箱数量
直接给bins传入整数即可,比如要生成20个等宽分箱,代码修改为:# 注意:np.histogram第二个返回值是分箱边界数组,长度为分箱数+1,不是直接返回宽度 bin_heights, bin_edges = np.histogram(get_pdf, density=True, bins=20) # 如需计算每个分箱的宽度,可调用np.diff处理边界数组 bin_widths = np.diff(bin_edges) - 指定固定分箱宽度
先基于你需要的宽度生成自定义分箱边界数组,再传入bins参数即可,比如要设置每个分箱宽度为0.5,示例代码:target_bin_width = 0.5 # 基于数据的最大最小值自动生成边界,最后加一个步长是为了包含最大值 custom_bins = np.arange(get_pdf.min(), get_pdf.max() + target_bin_width, target_bin_width) bin_heights, bin_edges = np.histogram(get_pdf, density=True, bins=custom_bins) - 使用内置自动分箱策略
你也可以给bins传入内置规则字符串,numpy会根据数据分布自动计算最优分箱规则,常用的规则包括:'auto':自动选择最合适的策略'fd':Freedman-Diaconis规则,对异常值鲁棒性好'scott':斯科特规则,适合正态分布数据
示例:
bin_heights, bin_edges = np.histogram(get_pdf, density=True, bins='fd')
内容的提问来源于stack exchange,提问作者Hongyiel Suh
相关产品推荐
相关产品推荐

