numpy.logspace
numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0)[source]
在对数尺度上返回间隔均匀的数字。
在线性空间中,序列从base ** start
(以start的幂为基础)开始,并以base ** stop
结束(请参见下面的endpoint)。
Changed in version 1.16.0: Non-scalar start and stop are now supported.
参数 : | start :array_like
stop :array_like
除非endpoint 为False。 在这种情况下,
返回除最后一个 (长度为num的序列)外的所有值。 num : 要生成的样本数。 默认值为 endpoint : 如果为 否则,不包括在内。 默认值为 base : 日志空间的基础。
(或 中元素之间的步长是一致的。 默认值为 dtype : 输出数组的类型。 如果未给出 则从其他输入参数推断数据类型。 axis : 结果中的轴用于存储样本。 仅当 或 默认情况下为 样本将沿着在开始处插入的新轴。 使用 1.16.0版中的新功能。 |
返回值 : | samples : num个样本,以对数刻度等距分布。 |
Notes
Logspace等效于代码
import numpy as np # 定义参数 start = 1.0 stop = 10.0 num = 10 endpoint = True base = 2 dtype = int # 生成从 start 到 stop 的等间隔数列 y = np.linspace(start, stop, num=num, endpoint=endpoint) print("Linspace array:") print(y) # 计算 base 的 y 次幂,并将结果转换为指定的数据类型 result = np.power(base, y).astype(dtype) print("\nPower array with specified dtype:") print(result)
例子
1)生成从 10210^2102 到 10310^3103 的 5 个等间隔的数
import numpy as np arr = np.logspace(2.0, 3.0, num=5) print(arr)
2)不包含终止值
import numpy as np arr = np.logspace(2.0, 3.0, num=5, endpoint=False) print(arr)
3)使用不同的底数
import numpy as np arr = np.logspace(2.0, 3.0, num=5, base=2) print(arr)
4)指定数据类型
import numpy as np arr = np.logspace(2.0, 3.0, num=5, dtype=int) print(arr)
5)使用示例
import numpy as np # 生成从 10^2 到 10^3 的 4 个等间隔的数 arr1 = np.logspace(2.0, 3.0, num=4) print("Logspace with endpoint=True:") print(arr1) # 生成从 10^2 到 10^3 的 4 个等间隔的数(不包含终止值) arr2 = np.logspace(2.0, 3.0, num=4, endpoint=False) print("\nLogspace with endpoint=False:") print(arr2) # 生成从 2^2 到 2^3 的 4 个等间隔的数,底数为 2 arr3 = np.logspace(2.0, 3.0, num=4, base=2.0) print("\nLogspace with base=2.0:") print(arr3)
图形说明:
import numpy as np import matplotlib.pyplot as plt # 定义点的数量 N = 10 # 生成从 10^0.1 到 10^1 的 N 个等间隔的数,包含终止值 x1 = np.logspace(0.1, 1, N, endpoint=True) # 生成从 10^0.1 到 10^1 的 N 个等间隔的数,不包含终止值 x2 = np.logspace(0.1, 1, N, endpoint=False) # 创建一个全零的数组,用于 y 坐标 y = np.zeros(N) # 绘制第一个数列的点 plt.plot(x1, y, 'o', label='endpoint=True') # 绘制第二个数列的点,并将 y 坐标上移 0.5 plt.plot(x2, y + 0.5, 'o', label='endpoint=False') # 设置 y 轴的显示范围 plt.ylim([-0.5, 1]) # 添加图例 plt.legend() # 显示图形 plt.show()