我正在寻找一个简单的函数(可能是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)