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