在利用python在进行数据分析的时候,经常需要按照某种规则快速生成实数序列,尤其是在学习matplotlib绘图的时候,需要模拟生成数据,然后开始绘制。
那么在python中有哪些方式生成实数序列呢?本文将为大家一一介绍。
在numpy中有多种生成序列的函数,分别是arange、linspace、logspace和geomspace,那么这几种方式有哪些区别呢?我们在日常开发中如何选择合适的方法来生成需要的实数呢?
In [1]: importnumpyasnp
1. arange
numpy.arange([start, ]stop, [step, ]dtype=None)
start默认是0,step默认是1.
这个函数的用法非常简单,给定一个start, 一个stop, 一个步长,然后就可以得到你想要的数据。
注意:
- 生成的数据不包含stop的值。
案例1:直接给定stop,start和step采用默认值。
从0开始,按照步长为1,生成数据,到3结束,注意不含3.
In [32]:
np.arange(3)
Out[32]:
array([0, 1, 2])
案例2:指定start和stop,按照默认的step=1的方式来生成数据。
In [33]:
np.arange(1,3)
Out[33]:
array([1, 2])
案例3:指定start、stop和step的值。
start为1,stop为3,步长为0.1.
In [35]:
np.arange(1,3,0.1)
接下来我们将和大家一起来看看另外的三个***space的用法
2. linspace
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
linspace的作用是生成等差数列。
num默认为50, endpoint默认为True, retstep默认是False即不返回步长大小
endpoint指的是生成的序列中是否包含stop这个数,True就是包含,False就是不包含。
案例1:1-50之间生成50个数。
此处并没有指定生成的实数序列的个数,采用的是默认值50个。
In [4]:
np.linspace(1,50)
案例2:1-50之间生成25个数
In [36]:
np.linspace(1,50,25)
案例3:1-50之间生成25个数,并打印步长信息。
In [37]:
np.linspace(1,50,retstep=True)
案例4:1-50之间生成25个数,不含50,且打印步长。
In [40]:
np.linspace(1,50,endpoint=False,retstep=True)
3. logspace
numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
logspace的作用是生成以底数为base,指数为start-stop的实数序列,其用法与linspace非常类似,其中base参数指定了底数。
案例1:生成1-50,底数为10的指数序列。
In [41]:
np.logspace(1,50)
案例2:生成1-50,底数为2的序列。
In [42]:
np.logspace(1,50,base=2)
案例3:1-50区间内生成5个数,底数为2的序列。
In [44]:
np.logspace(1,50,num=5,base=2)
4. geomspace
numpy.geomspace(start, stop, num=50, endpoint=True, dtype=None)
geomspace的作用是生成等比数列,指定start、stop和序列个数,即可生成等比数列。
案例1:1-50区间内,生成默认的50个数的等比数列。
In [49]:
np.geomspace(1,50)
案例2:1-16区间内,生成5个数的等比数列。
In [50]:
np.geomspace(1,16,num=5)
总结
本文为大家介绍了利用numpy生成实数序列的四种方法,分别是arange,linspace,logspace和geomspace。今后在不同的应用场景下可以选择不同的方式来生成数据。