python - 使用 NumPy 生成几何序列

标签 python numpy

我正在尝试生成一个几何序列,类似于 1、2、4、8...

我有以下代码:

import numpy as np

lower_price = 1
upper_price = 2
total_grids = 10

grid_box = np.linspace(lower_price , upper_price, total_grids, retstep=True)

print(grid_box)

输出:

(array([1.        , 1.11111111, 1.22222222, 1.33333333, 1.44444444,
       1.55555556, 1.66666667, 1.77777778, 1.88888889, 2.        ]), 0.1111111111111111)

此代码创建算术序列,而不是几何序列。我如何修复此代码以生成后者而不是前者?

最佳答案

您正在寻找np.logspace ,而不是np.linspace:

例如,

# Lower bound is 2**0 == 1
# Upper bound is 2**10 == 1024
np.logspace(0, 10, 10, base=2)

输出:

[1.00000000e+00 2.16011948e+00 4.66611616e+00 1.00793684e+01
 2.17726400e+01 4.70315038e+01 1.01593667e+02 2.19454460e+02
 4.74047853e+02 1.02400000e+03]

如果您尝试获取 1 到 2 之间的 10 个值,请使用:

# Lower bound is 2**0 == 1
# Upper bound is 2**1 == 2
np.logspace(0, 1, 10, base=2)

关于python - 使用 NumPy 生成几何序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71687278/

相关文章:

python - Pyramid 静态 View (js、img、css): AttributeError

python (pyodbc):Run ms access query from python results to size error

python - 整理 Pandas 的实验结果

python - 使用具有可变数量索引的 numpy mgrid

python - 在 IPython 中释放巨大的 numpy 数组的内存

python 3 : Multiply a vector by a matrix without NumPy

Python 3 统一码解码错误 : 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)

python - Scipy 操作是逐行完成的,而不是像 Matlab 中那样逐列完成的?

python - 类似于numpy的diff的功能

python - Python 中 NumPy 或 SciPy 中 Wolfram Mathematica 的模拟函数