【问题标题】:Produce evenly spaced values on a logarithmic scale (like `np.linspace()`, but on a log scale)在对数刻度上产生均匀间隔的值(如 `np.linspace()`,但在对数刻度上)
【发布时间】:2020-09-06 15:01:25
【问题描述】:

我想创建两个样本,第一个 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) 

但它返回给我一个非均匀分布的样本,只有 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
 ...

我想要一个值均匀分开的样本:每个 10^ 订单具有相同数量的值,因为我需要它来绘制对数图。为什么 linspace 不起作用,我该如何解决?

【问题讨论】:

  • 投反对票的人:我不能什么都知道,感谢您让新人参与编码。这对我来说是一场真正的斗争,我用谷歌搜索了它,但找不到任何东西,我知道有一个额外的代码用于日志图的示例。我找不到任何关于非均匀分布样本的事情是因为像你这样的人投票反对这样的话题,这对有这个问题的人来说很有趣和有用。
  • 我没有投反对票,但我只是简单地用谷歌搜索了非常基本的“对数刻度值 python”,在第一页上,它向我展示了 numpy logspace 结果。我不知道这对你来说是一场“真正的斗争”,为什么你会写“我用谷歌搜索但什么都找不到”
  • 好吧,因为我用谷歌搜索了“用 linspace 评估的非均匀分布”,但没有找到任何东西。当然,如果我有像你这样的谷歌,我会找到它,但为此我应该已经知道有一个代码,我没有。

标签: python numpy


【解决方案1】:

a linspace返回线性间隔的值,这意味着每个数字将存在与下一个相同的距离。 logspace另一方面,创建对数间隔的值,这是您要查找的。 https://numpy.org/devdocs/reference/generated/numpy.logspace.html

编辑: 请注意,logspace将指数作为start和stop值。意思是你必须在np.logspace(3, 10, num = 1000)np.logspace(-5, 10, num = 1000)

【讨论】:

  • 谢谢你的答案!哦,好的,我明白了。但我不明白这个值是线性间隔的。我也尝试了logspace,它返回了一个带有inf的数组......为什么是:( span>
  • 您需要将代码重写为@reardedhorse建议:np.logspace(3,10,num = 1000)np.logspace(-5,10,num = 1000) span>
  • 线性间隔意味着给定值之间存在相同的距离,例如, [1,4,7,10,13,16,19 ... 101,104,107,110]在0-10中提供相同数量的值,因为在10-20中存在。但是你想要e.g. 10从10-100等值的10个值和10值。 span>
【解决方案2】:

查看geomspace:

import numpy as np

y = np.geomspace(1e3, 1e10, num=8)

print(y)
[1.e+03 1.e+04 1.e+05 1.e+06 1.e+07 1.e+08 1.e+09 1.e+10]

【讨论】:

    【解决方案3】:

    您在此处尝试实现的目标使用了错误的功能。您应该为此使用“logspace”。

    y = np.logspace(3,10, num = 1000)
    print (y)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 2017-09-08
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多