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

Python自定义分箱直方图如何提取各区间对应的原始数据

提取直方图各分箱原始数据的实现方法

你可以使用numpy.digitize()方法实现需求,该方法可以返回每个数据点对应的分箱索引,再按索引筛选即可得到每个分箱的原始数据,和你现有代码的分箱规则完全兼容。

完整实现代码

import numpy as np

# 沿用你已定义的分箱规则
bins = [0,1,2,3,4,5,6,7,8,9,10]
# 获取每个数据点所属的分箱索引,right=False保证和plt.hist的左闭右开分箱规则一致
bin_indices = np.digitize(dist_from_spacer1, bins, right=False)
# 初始化存储各分箱原始数据的列表
binned_data = []

for bin_idx in range(1, len(bins)):
    # 筛选当前分箱对应的所有原始距离数据
    current_data = dist_from_spacer1[bin_indices == bin_idx]
    binned_data.append(current_data)

结果说明

  • 最终得到的binned_data是和分箱顺序一一对应的列表,binned_data[0]对应01μm区间的所有原始数据,`binned_data[1]`对应12μm区间的数据,以此类推
  • 你可以直接通过len(binned_data[i])验证每个分箱的数量,和np.histogram返回的计数结果完全一致

可选简化方案(基于pandas)

如果你已经在项目中使用pandas,可以用pd.cut更便捷地完成分箱分组:

import pandas as pd

bins = [0,1,2,3,4,5,6,7,8,9,10]
# 对数据做分箱,include_lowest=True保证左边界值被正确归入首个分箱
bin_group = pd.cut(dist_from_spacer1, bins=bins, include_lowest=True)
# 按分箱分组提取原始数据
binned_data = [group.to_list() for _, group in pd.Series(dist_from_spacer1).groupby(bin_group)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:48:03