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

2024-03-28 07:06:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用polyfit来查找数据集的fitline,但是现在我需要找到fitline函数的自然对数并绘制它。以下是我目前掌握的情况:

#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')

有更好或更正确的方法来做这件事吗?


Tags: 数据函数forplotnpalllistln
3条回答

似乎您只需要最初提供的容器的值。在这种情况下,这会更简单,也会更快。

ln_list = np.log(l_pn(l_bins))

请记住,numpy函数通常将自己的元素应用于数组,如果这样做是有意义的话。

编辑
我建议使用下面演示的numpy.log作为Roger Fan。因为您已经在使用numpy数组,所以这肯定比使用map或列表理解要好。


原始答案
如果z值是list,则可以使用map对每个值执行一些函数,在本例中为log(即ln)。

>>> 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

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

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

相关问题 更多 >