python numpy在开始值和结束值之间按指数间隔的样本

时间:2018-11-16 21:23:05

标签: python numpy

numpy.linspace生成均匀间隔的 在起始值和结束值之间浮动样本。

print (numpy.linspace(0.0, 1.0, num=9))

# [0 0.125 0.25 0.375 0.5  0.625 0.75  0.875 1]

print (numpy.linspace(9000.0, 1000.0, num=9))

# [9000. 8000. 7000. 6000. 5000. 4000. 3000. 2000. 1000.]

如何在起始值和终止值之间生成指数间隔的样本?


例如,以2的幂表示:

[0. 0.016 0.0625 0.141 0.25 0.391 0.562 0.766 1.]

谢谢您的建议。

2 个答案:

答案 0 :(得分:3)

对于介于0和1之间的情况,您只需取数组的平方即可:

print (numpy.linspace(0.0, 1.0, num=9)**2 )
# [0. 0.016 0.0625 0.141 0.25 0.391 0.562 0.766 1.]

print (numpy.power(numpy.linspace(0.0, 1.0, num=9), 2) )
# [0. 0.016 0.0625 0.141 0.25 0.391 0.562 0.766 1.]

编辑:

一种更通用的方法是:1)取起始和终止数的倒数幂; 2)获得这些值之间的线性间隔; 3)将数组提高为幂。

import numpy as np

def powspace(start, stop, power, num):
    start = np.power(start, 1/float(power))
    stop = np.power(stop, 1/float(power))
    return np.power( np.linspace(start, stop, num=num), power) 

print( powspace(0, 1, 2, 9) )
# [0. 0.016 0.0625 0.141 0.25 0.391 0.562 0.766 1.]

然后您可以在任何正值之间移动。例如,从9000到1000,其值之间的距离为3的幂:

print( powspace(9000, 1000, 3, 9) )
# [9000. 7358.8 5930.4 4699.9 3652.6 2773.7 2048.5 1462.2 1000.]

答案 1 :(得分:3)

您可以这样使用np.logspace

np.logspace(-9, 0, base=2, num=10)

equivalent to power(base, y)

编辑

答案提到指数间隔,然后是值的平方。

这个答案实际上是指数间隔的,即2 ^ x。值x ^ 2不是指数空间,而是多项式。