所以我对linspace有点问题。我想生成一系列数字,如:
[0.000001, 0.00001, 0.0001 , 0.001 ,0 .01 , 0.1]
所以我尝试了以下代码:
alphas = np.linspace(0.0000001,10,num=11)
print(alphas)
得到了结果:
[ 1.00000000e-07 1.00000009e+00 2.00000008e+00 3.00000007e+00
4.00000006e+00 5.00000005e+00 6.00000004e+00 7.00000003e+00
8.00000002e+00 9.00000001e+00 1.00000000e+01]
比我认为它必须是显示和格式的问题但是在尝试之后
if(alphas[0]>1):
print("yes the first number is greater than 1")
if(alphas[1]>1):
print("yes the second number is greater than 1")
第二个数字真的大于一个
所以我的问题是什么错了?因为linspace应该“在指定的时间间隔内返回均匀间隔的数字。”
答案 0 :(得分:2)
它正在做你所要求的:在1e-7和10之间创建一组线性增加的数字。因为这几乎与0到10的范围相同,所以它并不奇怪你得到一个增量。
你想要的是np.logspace
,它会给你一个对数增加:
In [2]: np.logspace(-7, 1, num=11)
Out[2]:
array([ 1.00000000e-07, 6.30957344e-07, 3.98107171e-06,
2.51188643e-05, 1.58489319e-04, 1.00000000e-03,
6.30957344e-03, 3.98107171e-02, 2.51188643e-01,
1.58489319e+00, 1.00000000e+01])
正如Warren Weckesser所指出的,从NumPy 1.12开始,还有np.geomspace
函数稍微容易使用,因为你可以直接给它端点,而不是它的十次幂指数:
np.geomspace(1e-7, 10, num=11)
答案 1 :(得分:2)
如果你希望这个系列像你所展示的那样,你可以采取10次幂。如果你想在对数空间中保持均匀间距,那就去找HannesOvrén的答案吧。
alpha = 10.**np.arange(-7, 2)
打印alpha
给出:
Out[1]:
array([ 1.00000000e-07, 1.00000000e-06, 1.00000000e-05,
1.00000000e-04, 1.00000000e-03, 1.00000000e-02,
1.00000000e-01, 1.00000000e+00, 1.00000000e+01])
答案 2 :(得分:0)
你可以使用列表理解:
>>> a=[10.0**i for i in range(-7,-0)]
>>> a
[1e-07, 1e-06, 1e-05, 0.0001, 0.001, 0.01, 0.1]