简单的内置功能,可将数字拆分为多个存储箱



我正在寻找一个简单的函数(可能是numpy或任何其他包(,它可以将给定的数字拆分为多个bin,例如:

func(start=0,end=100,bins=4)

想要的结果是:

(0,25,50,75,100)

也适用于浮动:

例如

func(start=0,end=100,bins=6)

想要的结果是:

(0,17,34,50,67,84,100)

要在没有numpy的情况下完成此操作,您可以通过除以(ends - start) / bins来计算差距,然后使用一个超过bin数(+1(的范围并进行相应的舍入。

import math
def f(start, end, bins):
gap = (end - start) / bins
return tuple(math.ceil(n * gap + start) for n in range(bins + 1))

f(start=0,end=100,bins=4)
# (0, 25, 50, 75, 100)
f(start=0,end=100,bins=6)
# (0, 17, 34, 50, 67, 84, 100)
f(start=10,end=50,bins=6)
# (10, 17, 24, 30, 37, 44, 50)

使用:

import numpy as np

def fun(start=0, end=0, bins=4):
return tuple(np.ceil(np.linspace(start=start, stop=end, num=bins + 1)).astype(np.int32))

print(fun(start=0, end=100, bins=4))
print(fun(start=0, end=100, bins=6))

输出

(0, 25, 50, 75, 100)
(0, 17, 34, 50, 67, 84, 100)

最新更新