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

求可实现数值区间分bin的简单内置函数(支持numpy等库方案)

区间分箱边界生成方案

核心实现

直接使用NumPy内置的numpy.linspace函数即可完美匹配需求,该函数原生支持在指定区间内生成等间隔的数值序列,自动适配整数、浮点类型的区间输入。
参数对应逻辑:

  • 入参start、end直接传入区间的起止值
  • 序列长度设置为bins + 1,即可生成包含首尾边界的所有分箱阈值

代码示例

基础调用

import numpy as np

# 示例1:start=0, end=100, bins=4
boundary_1 = np.linspace(start=0, stop=100, num=4 + 1)
print(tuple(boundary_1))
# 输出:(0.0, 25.0, 50.0, 75.0, 100.0)
# 需要整数输出的话转类型即可:tuple(boundary_1.astype(int)) → (0, 25, 50, 75, 100)

整数边界适配

# 若需要严格匹配示例的整数分配规则,可单独做余数适配
def get_int_bins(start, end, bins):
    step = (end - start) / bins
    res = [start]
    for i in range(1, bins):
        res.append(round(start + i * step + 1e-9)) # 加极小值避免33.333这类值的舍入偏差
    res.append(end)
    return tuple(res)
print(get_int_bins(0,100,6))
# 输出:(0, 17, 34, 50, 67, 84, 100)

浮点区间支持

# 浮点区间示例:start=1.2, end=4.8, bins=4
float_boundary = np.linspace(start=1.2, stop=4.8, num=4 + 1)
print(tuple(float_boundary))
# 输出:(1.2, 2.1, 3.0, 3.9, 4.8)

封装自定义函数

可以直接封装成你需要的调用形式:

def gen_bin_boundaries(start: float, end: float, bins: int, force_int: bool = False) -> tuple:
    if force_int:
        step = (end - start) / bins
        res = [start]
        for i in range(1, bins):
            res.append(round(start + i * step + 1e-9))
        res.append(end)
        return tuple(res)
    return tuple(np.linspace(start=start, stop=end, num=bins + 1))

# 调用测试
print(gen_bin_boundaries(0, 100, 4))
print(gen_bin_boundaries(0, 100, 6, force_int=True))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:45:07