【问题标题】:How do you do natural logs (e.g. "ln()") with numpy in Python?你如何在 Python 中使用 numpy 处理自然日志(例如“ln()”)?
【发布时间】:2012-05-22 12:20:18
【问题描述】:

使用 numpy,我该怎么做:

ln(x)

是否等同于:

np.log(x)

对于这样一个看似微不足道的问题,我深表歉意,但我对logln 之间区别的理解是ln 是logspace e?

【问题讨论】:

    标签: python numpy logarithm natural-logarithm


    【解决方案1】:

    正确,np.log(x)x 的自然对数(基础 e 对数)。

    对于其他基,请记住对数定律:log-b(x) = log-k(x) / log-k(b) 其中log-b 是某个任意基b 中的日志,log-k 是基k 中的日志,例如

    这里 k = e

    l = np.log(x) / np.log(100)
    

    l 是 x 的 log-base-100

    【讨论】:

    • 精度损失怎么办?
    【解决方案2】:

    np.logln,而 np.log10 是您的标准以 10 为底的对数。

    【讨论】:

    • 对于那些想知道 np 是什么的人,比如我自己 "import numpy as np"
    【解决方案3】:
    from numpy.lib.scimath import logn
    from math import e
    
    #using: x - var
    logn(e, x)
    

    【讨论】:

      【解决方案4】:

      我通常是这样的:

      from numpy import log as ln
      

      也许这会让你更舒服。

      【讨论】:

        【解决方案5】:

        你可以简单地做相反的事情,将 log 的 base 设置为 e。

        import math
        
        e = 2.718281
        
        math.log(e, 10) = 2.302585093
        ln(10) = 2.30258093
        

        【讨论】:

        • 注意 math.e 存在,math.log 以第二为基数。所以math.log(10, math.e) 是正确的,而上面实际上会返回〜0.43 ...
        【解决方案6】:

        Numpy 似乎从 MATLAB/Octave 中得到启发,并使用 log 作为“log base e”或 ln。与 MATLAB/Octave 一样,Numpy 不提供任意底数的对数函数。

        如果您发现 log 令人困惑,您可以创建自己的对象 ln 引用 numpy.log 函数:

        >>> import numpy as np
        >>> from math import e
        >>> ln = np.log  # assign the numpy log function to a new function called ln
        >>> ln(e)
        1.0
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-10-22
          • 2022-06-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-25
          • 2021-01-19
          • 2020-05-27
          相关资源
          最近更新 更多