【发布时间】:2012-05-22 12:20:18
【问题描述】:
使用 numpy,我该怎么做:
ln(x)
是否等同于:
np.log(x)
对于这样一个看似微不足道的问题,我深表歉意,但我对log 和ln 之间区别的理解是ln 是logspace e?
【问题讨论】:
标签: python numpy logarithm natural-logarithm
使用 numpy,我该怎么做:
ln(x)
是否等同于:
np.log(x)
对于这样一个看似微不足道的问题,我深表歉意,但我对log 和ln 之间区别的理解是ln 是logspace e?
【问题讨论】:
标签: python numpy logarithm natural-logarithm
正确,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
【讨论】:
from numpy.lib.scimath import logn
from math import e
#using: x - var
logn(e, x)
【讨论】:
我通常是这样的:
from numpy import log as ln
也许这会让你更舒服。
【讨论】:
你可以简单地做相反的事情,将 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 ...
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
【讨论】: