gpt4 book ai didi

python - 如何在 Python 中创建对数间隔数组?

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:27 24 4
gpt4 key购买 nike

我想创建一个数组,从 10^(-2) 开始到 10^5,对数间隔,如下所示:

levels = [0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08. 0.09, 0.1, 0.2,..., 10.,20.,30.,40.,50.,60.,70.,80.,90.,100.,200.,300.,400.,500.,600.,700.,800.,900.,1000.,2000.,3000.,4000.,5000.,6000.,7000.,8000.,9000.,10000.,20000.,30000., ..., 100000.]

有没有办法不用写下每一个数字就可以创建它?

我注意到 NumPy 中有一个名为 logspace 的函数,但它对我不起作用,因为当我编写时:

levels = np.logspace(-2., 5., num=63)

它返回一个等间距的数组,而不是按对数递增。

最佳答案

您可以使用外积来获得所需的输出。正如@Matt Messersmith 所指出的,您只需在答案末尾附加 100000 作为 answer = np.append(answer, 100000)

解释

创建一个从 0.01 到 10000 的对数范围内的值

[1.e-02 1.e-01 1.e+00 1.e+01 1.e+02 1.e+03 1.e+04]

然后创建一个乘数数组

[1 2 3 4 5 6 7 8 9]

最后,取外积生成你想要的值范围。

a1 = np.logspace(-2, 4, 7)
# a1 = 10.**(np.arange(-2, 5)) Alternative suggested by @DSM in the comments
a2 = np.arange(1,10,1)
answer = np.outer(a1, a2).flatten()

输出

[1.e-02 2.e-02 3.e-02 4.e-02 5.e-02 6.e-02 7.e-02 8.e-02 9.e-02 1.e-01 2.e-01 3.e-01 4.e-01 5.e-01 6.e-01 7.e-01 8.e-01 9.e-01 1.e+00 2.e+00 3.e+00 4.e+00 5.e+00 6.e+00 7.e+00 8.e+00 9.e+00 1.e+01 2.e+01 3.e+01 4.e+01 5.e+01 6.e+01 7.e+01 8.e+01 9.e+01 1.e+02 2.e+02 3.e+02 4.e+02 5.e+02 6.e+02 7.e+02 8.e+02 9.e+02 1.e+03 2.e+03 3.e+03 4.e+03 5.e+03 6.e+03 7.e+03 8.e+03 9.e+03 1.e+04 2.e+04 3.e+04 4.e+04 5.e+04 6.e+04 7.e+04 8.e+04 9.e+04]

关于python - 如何在 Python 中创建对数间隔数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52390359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com