我使用numpy.linspace来帮助生成数据的bin。我想要0到1,000,000之间的20个箱子,每个箱子大小为20k。
numpy.linspace给出了不均匀的bin大小。
bins = np.linspace(start = 0, stop =1000000, num = 50, dtype = 'int64')
这给出了如下的箱子(前5个箱子)
2.040800000000000000e+04
,4.081600000000000000e+04
,6.122400000000000000e+04
,8.163200000000000000e+04
,1.020400000000000000e+05
任何想法如何获得偶数箱20000,40000,60000,80000,1000000
感谢您的帮助和建议
只需在样本数量上加一
>>> bins = np.linspace(start = 0, stop = 1000000, num = 51, dtype = 'int64')
>>> bins
array([ 0, 20000, 40000, 60000, 80000, 100000, 120000,
140000, 160000, 180000, 200000, 220000, 240000, 260000,
280000, 300000, 320000, 340000, 360000, 380000, 400000,
420000, 440000, 460000, 480000, 500000, 520000, 540000,
560000, 580000, 600000, 620000, 640000, 660000, 680000,
700000, 720000, 740000, 760000, 780000, 800000, 820000,
840000, 860000, 880000, 900000, 920000, 940000, 960000,
980000, 1000000])
使用arange
而不是linspace
:
In [456]: np.arange(0,1000001,20000)
Out[456]:
array([ 0, 20000, 40000, 60000, 80000, 100000, 120000,
140000, 160000, 180000, 200000, 220000, 240000, 260000,
280000, 300000, 320000, 340000, 360000, 380000, 400000,
420000, 440000, 460000, 480000, 500000, 520000, 540000,
560000, 580000, 600000, 620000, 640000, 660000, 680000,
700000, 720000, 740000, 760000, 780000, 800000, 820000,
840000, 860000, 880000, 900000, 920000, 940000, 960000,
980000, 1000000])
In [457]: _.shape
Out[457]: (51,)
arange
不包括终点,所以这就是为什么我添加1. linspace
包括终点(但可以关闭),但默认情况下会产生浮点数。