Skip to main content
 首页 » 编程设计

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

2025年05月04日14Terrylee

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

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 和 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.]