AskPython中的一系列文章详细介绍了Python numpy库中可用的各种函数,是时候向对数问好了!在了解 Python 中的函数之前,我们先尝试了解一下什么是对数以及为什么要使用对数。
假设我们有一个数字“10”,想要计算它的“3”次方。结果将是“1,000”。对数是表达此运算的另一种方法。为获得所需数字而对某个数字进行幂的操作称为“对数”
另请阅读:Numpy log10 – 按元素返回输入数组的以 10 为底的对数。。
在上面的例子中,10 的对数得到 1,000 就是“3”!现在,我们将把注意力转向本文的范围——log1p ()函数。该函数返回输入数字加一后的自然对数。
让我们首先使用以下代码导入numpy库。
import numpy as np |
此后,我们将 通过以下各节进一步探讨log1p( ) 函数。
- log1p( ) 函数的语法
- 为什么使用log1p(x)而不是log(x+1)?
- 在 N 维数组上使用log1p( )
log1p( ) 函数的语法
log1p( )函数的工作原理与log( )函数类似,但唯一的区别是在计算结果之前,输入的数字会加“1”。以下是log1p( )函数的语法,其中包含其运行所需的强制输入和可选输入。
numpy. log1p(x, out = None , * , where = True , dtype = None ) |
在哪里,
- x – N 维数组或标量
- out –默认情况下设置为none的可选构造,但可用于将结果存储在与输出长度相同的所需数组中
- * – kwargs 或关键字参数,它是一个可选构造,用于将参数的关键字可变长度传递给函数
- 其中 –一个可选构造,用于在设置为True (默认设置)时计算给定位置的通用函数 (ufunc),或在设置为False时不计算
- dtype –一个可选结构,用于指定正在使用的数据类型
为什么使用log1p(x)而不是log(x+1)?
当使用已经可用的log()函数可以完成相同的操作时,人们可能为什么要费心构建一个特定的函数来将“1”添加到输入数字中。为了找出这背后的原因,让我们比较这两个函数的结果,看看是否存在任何可观察到的差异。
x = 10 np.log(x + 1 ) np.log1p(x) |
以下是上述代码的结果。
结果甚至到小数点最后一位都相同!但是,如果我们减少“x”的数量并将其放入相同的函数中会怎么样?这些能够返回相同的结果吗?让我们来看看吧!
x = 1e - 10 np.log(x + 1 ) np.log1p(x) |
现在的结果不一样了,是吗?(邪恶的坏笑!)
这背后的主要原因是log1p(x)函数似乎可以准确地工作,即使对于小数点后几位数开始的较小数字也是如此。但是,对于log(x+1)函数却不能这样说,因为结果会由于舍入误差而产生偏移。因此,当涉及较小数量级的数字时,使用log1p( )返回准确的结果。
在 N 维数组上使用log1p( )
在本节中,我们尝试仅在 N 维数组的选定位置部署log1p( )函数。
ar1 = np.array([[ 1 , 8 , 0.09 ], [ 5.007 , 33 , 2 ]]) np.log1p(ar1, where = [[ False , True , True ], [ True , True , False ]]) |
由于使用了where选项,可以看出仅在给定为True 的位置返回结果,其他位置的结果为零。
结论
现在我们已经到了本文的结尾,希望它已经详细说明了如何使用 numpy 库中的log1p( ) 函数 。这是另一篇文章,详细介绍了Python 中numpy 库中的expm1( )函数 的用法。AskPython中还有许多其他有趣且内容丰富的文章,可能对那些希望提高 Python 水平的人有很大帮助。 马泽尔托夫!