numpy.linspace和bin之间的不均匀间距

问题描述 投票:-1回答:2

我使用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

感谢您的帮助和建议

python numpy
2个回答
1
投票

只需在样本数量上加一

>>> 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])

0
投票

使用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包括终点(但可以关闭),但默认情况下会产生浮点数。

© www.soinside.com 2019 - 2024. All rights reserved.