我想创建两个样本,第一个 y 样本的值在 10^3 到 10^10 的范围内,另一个 x 样本的值在 10^-5 到 10^10 的范围内用于对数图。我尝试了以下方法:
y = np.linspace(1e3,1e10, num = 1000)
x = np.linspace(1e-5,1e10, num = 1000)
Run Code Online (Sandbox Code Playgroud)
但它返回给我一个非均匀分布的样本,只有 1 个 10^-5 数量级的值和更多的 10^9 数量级的 x,以及 10^-5 和 10^7 之间的零值。这就是我得到的 x:
[1.00000000e-05 1.00100100e+07 2.00200200e+07 3.00300300e+07
4.00400400e+07 5.00500501e+07 6.00600601e+07 7.00700701e+07
8.00800801e+07 9.00900901e+07 1.00100100e+08 1.10110110e+08
1.20120120e+08 1.30130130e+08 1.40140140e+08 1.50150150e+08
...
Run Code Online (Sandbox Code Playgroud)
我想要一个值均匀分隔的样本:每个 10^ 订单具有相同数量的值,因为我需要它来绘制对数图。为什么 linspace 不起作用,我该如何解决?
小智 5
Alinspace返回线性间隔的值,这意味着从每个数字到下一个数字的距离相同。
logspace另一方面,创建对数间隔的值,这正是您要寻找的。
https://numpy.org/devdocs/reference/generated/numpy.logspace.html
编辑:注意logspace将指数作为起始值和终止值。意思是你必须写np.logspace(3, 10, num = 1000)和np.logspace(-5, 10, num = 1000)