Python numpy.geomspace函数方法的使用

numpy.geomspace 是 NumPy 库中的一个函数,用于生成对数刻度上的等比例数值序列。这在处理几何级数、对数图等问题时非常有用。本文主要介绍一下NumPy中geomspace方法的使用。

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

序列的最终值,除非端点为False。 在这种情况下,

num + 1值在对数空间的间隔内间隔开,

返回除最后一个(长度为num的序列)外的所有值。

numinteger, 可选

要生成的样本数。 默认值为50

endpointboolean, 可选

如果为true,则停止是最后一个样本。

 否则,不包括在内。 默认值为True

dtypedtype

输出数组的类型。 如果未给出dtype

则从其他输入参数推断数据类型。

axisint, 可选

结果中的轴用于存储样本。

 仅当start或stop类似于数组时才相关。

 默认情况下为(0),样本将沿着在开始处插入的新轴。

 使用-1来获得轴的末端。 1.16.0版中的新功能。

返回值 :

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)

endpointparameter的图形化图示:

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


推荐阅读
cjavapy编程之路首页