numpy.logspace
是 Python 的 NumPy 库中的一个函数,用于生成等比数列(即每个数与前一个数的比值都相等,其中每个元素都是前一个元素的固定倍数。)。在大多数情况下,等比数列用于表示在对数尺度上均匀分布的数据,这在处理一些科学或工程问题时非常有用。
函数的基本语法如下:
numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0)
【=base**linspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0)】
参数解释:
start
:序列的起始值(以base
为底的对数)。stop
:序列的结束值(以base
为底的对数)。num
:要生成的样本数,默认为 50。endpoint
:如果为 True,stop
是最后一个样本。否则,不包括stop
。默认为 True。base
:对数的底数,默认为 10。dtype
:输出数组的类型。如果未给出,则从其他输入参数推断数据类型。axis
:在返回的数组中,样本沿着哪个轴放置。0 表示第一个轴(行),1 表示第二个轴(列)。默认为 0。
下面是一个简单的例子:
import numpy as np
# 生成从 10^0 到 10^2(即 1 到 100)的等比数列,共有 10 个数
arr = np.logspace(0, 2, 10)
print(arr)
结果输出:
[ 1. 1.66810054 2.7825594 4.64158883 7.74263683
12.91549665 21.5443469 35.93813664 59.94842503 100. ]
例1:
np.logspace(0,100,10)
结果输出:
array([1.00000000e+000, 1.29154967e+011, 1.66810054e+022, 2.15443469e+033,
2.78255940e+044, 3.59381366e+055, 4.64158883e+066, 5.99484250e+077,
7.74263683e+088, 1.00000000e+100])
np.logspace(0,100,10)=10**np.linspace(0,100,10)
例2:
np.logspace(1,6,5,base=2)
结果输出:
array([ 2. , 4.75682846, 11.3137085 , 26.90868529, 64. ])
解:
np.logspace(1,6,5,base=2)=base(2)**linspace(1,6,5)=2**[1,2.25,3.5,4.75,6]=[ 2. , 4.75682846, 11.3137085 , 26.90868529, 64. ]
例3:
np.logspace(1,6,5,base=np.e)
结果输出:
array([ 2.71828183, 9.48773584, 33.11545196, 115.58428453,
403.42879349])
解:
np.logspace(1,6,5,base=np.e)=base(e)**linspace(1,6,5)=e**[1,2.25,3.5,4.75,6]=[ 2.71828183, 9.48773584, 33.11545196, 115.58428453, 403.42879349]
例4:
np.logspace([0,1,2,3],[3,2,1,0],num=5)
结果输出:
array([[ 1. , 10. , 100. , 1000. ],
[ 5.62341325, 17.7827941 , 56.23413252, 177.827941 ],
[ 31.6227766 , 31.6227766 , 31.6227766 , 31.6227766 ],
[ 177.827941 , 56.23413252, 17.7827941 , 5.62341325],
[1000. , 100. , 10. , 1. ]])
解:
该题base为默认值10,即np.logspace([0,1,2,3],[3,2,1,0],num=5)=10**np.linspace([0,1,2,3],[3,2,1,0],num=5)=10**([0,1,2,3],[0.75,1.25,1.75,2.25],[1.5,1.5,1.5,1.5],[2.25,1.75,1.25,0.75],[3,2,1,0])=
[[ 1. , 10. , 100. , 1000. ],
[ 5.62341325, 17.7827941 , 56.23413252, 177.827941 ],
[ 31.6227766 , 31.6227766 , 31.6227766 , 31.6227766 ],
[ 177.827941 , 56.23413252, 17.7827941 , 5.62341325],
[1000. , 100. , 10. , 1. ]]