如何在python中获取函数的ln?

How to take the ln of a function in python?

提问人:user2954167 提问时间:8/12/2014 更新时间:5/30/2023 访问量:14856

问:

我使用 polyfit 来查找数据集的拟合线,但现在我需要找到该拟合线函数的自然对数并绘制它。这是我目前所拥有的:

#Fit line for PD
deg = 10
zn = np.polyfit(l_bins, l_hits, deg)
l_pn = np.poly1d(zn)
pylab.plot(l_bins, l_pn(l_bins), '-g')
ln_list = []
for all in l_bins:
    ln_list.append(np.log(l_pn(all)))
pylab.plot(l_bins, ln_list, '-b')

有没有更好或更正确的方法来做到这一点?

蟒蛇 numpy

评论


答:

-1赞 Cory Kramer 8/12/2014 #1

编辑
:我建议按照下面演示的 Roger Fan 使用。由于您已经在使用 numpy 数组,因此这肯定会优于使用 或列表推导。
numpy.logmap


原始答案
如果您有一个 z 值,则可以用于对每个值执行某些函数,在本例中为 (即 )。
listmaplogln

>>> x = range(1,10)
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> from math import log
>>> map(log, x)
[0.0, 0.6931471805599453, 1.0986122886681098, 1.3862943611198906, 1.6094379124341003, 1.791759469228055, 1.9459101490553132, 2.0794415416798357, 2.1972245773362196]

您可以使用任何功能,因此您可以根据需要使用。numpy.log

评论

3赞 Roger Fan 8/12/2014
无需使用 map,使用数字数组进行元素级日志,并且速度会快得多。np.log
3赞 Roger Fan 8/12/2014 #2

似乎您只需要最初提供的 bin 的值。在这种情况下,这更简单,速度也快得多。

ln_list = np.log(l_pn(l_bins))

请记住,如果这样做有意义,函数通常会按元素应用于数组。numpy

1赞 Anika 1/6/2017 #3

log(x) 基于 10,而 ln(x) 基于自然对数。

import math
x = 8
print(math.log(x, math.e))