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.]
谢谢您的建议。
答案 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不是指数空间,而是多项式。