numpy.geomspace
numpy.geomspace(start, stop, num=50, endpoint=True, dtype=None, axis=0)[source]
返回数字以对数刻度(几何级数)均匀分布。
这类似于 logspace,但是直接指定了端点。 每个输出样本是前一个样本的恒定倍数。
Changed in version 1.16.0: Non-scalar start and stop are now supported.
参数 : | start :array_like 序列的起始值。 stop :array_like 序列的最终值,除非端点为
返回除最后一个(长度为num的序列)外的所有值。 num : 要生成的样本数。 默认值为 endpoint : 如果为 否则,不包括在内。 默认值为 dtype : 输出数组的类型。 如果未给出 则从其他输入参数推断数据类型。 axis : 结果中的轴用于存储样本。 仅当start或stop类似于数组时才相关。 默认情况下为( 使用 |
返回值 : | samples :ndarray num个samples,以对数刻度等距分布。 |
Notes
如果输入或dtype是复数,则输出将在复数平面中遵循对数螺旋。 (有无限数量的螺旋线穿过两个点;输出将遵循最短的这种路径。)
例子
生成从 1 到 1000 的 4 个等比例的数
import numpy as np arr = np.geomspace(1, 1000, num=4) print(arr)
2)不包含终止值
import numpy as np arr = np.geomspace(1, 1000, num=4, endpoint=False) print(arr)
3)指定数据类型
import numpy as np arr = np.geomspace(1, 1000, num=4, dtype=int) print(arr)
4)生成从 1 到 16 的 5 个等比例的数,并设置 dtype 为浮点数
import numpy as np arr = np.geomspace(1, 16, num=5, dtype=float) print(arr)
5)使用示例
import numpy as np # 生成整数等比例数列 arr5 = np.geomspace(1, 256, num=9, dtype=int) print("\ngeomspace(1, 256, num=9, dtype=int):") print(arr5) arr5_rounded = np.around(np.geomspace(1, 256, num=9)).astype(int) print("around(geomspace(1, 256, num=9)).astype(int):") print(arr5_rounded) # 生成递减的等比例数列 arr6 = np.geomspace(1000, 1, num=4) print("\ngeomspace(1000, 1, num=4):") print(arr6) # 生成负数的等比例数列 arr7 = np.geomspace(-1000, -1, num=4) print("\ngeomspace(-1000, -1, num=4):") print(arr7) #生成复杂数的等比例数列 # 直线上的等比例数列 arr8 = np.geomspace(1j, 1000j, num=4) print("\ngeomspace(1j, 1000j, num=4):") print(arr8) # 圆形上的等比例数列 arr9 = np.geomspace(-1+0j, 1+0j, num=5) print("\ngeomspace(-1+0j, 1+0j, num=5):") print(arr9)
endpoint
parameter的图形化图示:
import numpy as np import matplotlib.pyplot as plt N = 10 y = np.zeros(N) # 使用 endpoint=True 绘制点 plt.semilogx(np.geomspace(1, 1000, N, endpoint=True), y + 1, 'o', label='endpoint=True') # 使用 endpoint=False 绘制点 plt.semilogx(np.geomspace(1, 1000, N, endpoint=False), y + 2, 'o', label='endpoint=False') # 设置坐标轴范围 plt.axis([0.5, 2000, 0, 3]) # 添加网格 plt.grid(True, color='0.7', linestyle='-', which='both', axis='both') # 添加图例 plt.legend() # 显示图形 plt.show()