arange是Numpy中使用频率超高的一个数组生成器,其输入参数可以为一个、两个或者三个。
>>> np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.arange(3,5)
array([3, 4])
>>> np.arange(3,10,2)
array([3, 5, 7, 9])
与arange作用相似的函数是linspace,其输入参数为np.linspace(a,b,num),其含义为,在
[
a
,
b
]
[a,b]
[a,b]区间内等间隔生成num个数;如果指明endpoint=False,则不包含
b
b
b点。
>>> np.linspace(1,2,5)
array([1. , 1.25, 1.5 , 1.75, 2. ])
>>> np.linspace(1,2,5,endpoint=False)
array([1. , 1.2, 1.4, 1.6, 1.8])
logspace和linspace的逻辑是相似的,都是在某个区间内等间隔生成数组,只不过logspace的等间隔,是对数意义上的等间隔,其等价于10**np.linspace。
>>> print(np.logspace(1,2,5))
[ 10. 17.7827941 31.6227766 56.23413252 100. ]
>>> print(10**np.linspace(1,2,5))
[ 10. 17.7827941 31.6227766 56.23413252 100. ]
logspace中的base参数,可以指定对数的底,例如
>>> print(np.logspace(1,2,5,base=2))
[2. 2.37841423 2.82842712 3.36358566 4. ]
geomspace同样是等间隔生成对数,但和logspace的区别是,同样在a,b区间内生成对数,logspace生成范围是
[
1
0
a
,
1
0
b
]
[10^a,10^b]
[10a,10b],geomspace的范围则是
[
a
,
b
]
[a,b]
[a,b]。
>>> print(np.geomspace(1,2,5))
[1. 1.18920712 1.41421356 1.68179283 2. ]
这种区别可能过于微秒,画个图可能理解起来更加容易
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(1,2,20)
y = np.logspace(1,2,20)
plt.plot(x,y,marker="*")
plt.show()

x = np.linspace(1,2,20)
y = np.geomspace(1,2,20)
plt.plot(x,y,marker="*")
plt.show()

最后,总结一下这四个函数的区别,首先是linspace和arange
linspace(a,b,N) 在
[
a
,
b
]
[a,b]
[a,b]中间生成N个值arange(a,b,delta) 在
[
a
,
b
)
[a,b)
[a,b)之间,以
d
e
l
t
a
delta
delta为间隔生成值然后是三个space函数
linspace(a,b,N) 在
[
a
,
b
]
[a,b]
[a,b]中间生成N个值logspace(a,b,N,base=c) 在
[
c
a
,
c
b
]
[c^a, c^b]
[ca,cb]之间等指数间隔生成N个值geomspace(a,b,N,base=c) 在
[
a
,
b
]
[a,b]
[a,b]之间,等指数间隔生成N个值