[英]How to take the ln of a function in python?
我使用 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')
有没有更好或更正确的方法来做到这一点?
似乎您只想要最初提供的垃圾箱的值。 在这种情况下,这更简单,速度也会更快。
ln_list = np.log(l_pn(l_bins))
请记住,如果这样做有意义, numpy
函数通常会将自己逐元素应用于数组。
log(x) 是基于 10 的,而 ln(x) 是基于自然对数的。
import math
x = 8
print math.log(x, math.e)
编辑
我建议使用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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.