你如何在 Python 中使用 numpy 处理自然日志(例如“ln()”)?
Posted
技术标签:
【中文标题】你如何在 Python 中使用 numpy 处理自然日志(例如“ln()”)?【英文标题】:How do you do natural logs (e.g. "ln()") with numpy in Python? 【发布时间】:2012-05-22 12:20:18 【问题描述】:使用 numpy,我该怎么做:
ln(x)
是否等同于:
np.log(x)
对于这样一个看似微不足道的问题,我深表歉意,但我对log
和ln
之间区别的理解是ln
是logspace e?
【问题讨论】:
【参考方案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.log
是 ln
,而 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
【讨论】:
以上是关于你如何在 Python 中使用 numpy 处理自然日志(例如“ln()”)?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Python 多处理 Pool.map 在 for 循环中填充 numpy 数组
python中numpy.ndarray怎么删除指定下标的元素
在 python 和 numpy 中处理大数据,没有足够的内存,如何将部分结果保存在磁盘上?
python编写自定义lambda函数使用numpy中的np.vectorize函数在numpy数组中的每个元素上施加应用自定义lambda函数生成新的numpy数组