use*_*887 5 python logarithm list
我有一个值列表,并希望将其转换为该列表的日志或将列表的日志传递给函数。我对 R 比较熟悉,你通常可以在任何东西周围扔一些 ()。当我在 Python 中尝试此操作时,出现错误:
TypeError: must be real number, not list
列表如下所示:
pressures[:5]
Out[11]: [1009.58, 1009.58, 1009.55, 1009.58, 1009.65]
我尝试获取日志的位置并不重要,我得到了同样的错误......在一个函数中:
plt.plot(timestamps, log(pressures))
plt.xlabel('Timestamps')
plt.ylabel('Air Pressure')
plt.show()
在解析数据时:
pressures = log([record['air_pressure'] for record in data])
有几种方法可以处理这个问题。Python 在math模块中有一些基本的内置函数。一个是log。它接受一个浮点数或一个整数作为参数并输出一个浮点数:
> from math import log
> log(20)
2.995732273553991
要使用此函数处理列表,您需要在列表中的每个项目上调用它:
> data = [1, 2, 3]
> [log(x) for x in data]
[0.0, 0.6931471805599453, 1.0986122886681098]
另一方面,我提到这一点是因为看起来您已经在使用一些相关的库,numpy可以一次处理整个列表。
> import numpy as np
> np.log([1, 2, 3])
array([ 0.        ,  0.69314718,  1.09861229]) # Notice this is a numpy array
如果你想使用numpy并取回一个列表,你可以这样做:
> list(np.log([1, 2, 3]))
[0.0, 0.69314718055994529, 1.0986122886681098]
您只能使用log()一个号码。因此,您需要编写一个循环来迭代列表并应用于log()每个数字。
幸运的是,您已经编写了一个循环,经过一些修改即可实现这一目的。代替:
pressures = log([record['air_pressure'] for record in data])
写:
pressures = [log(record['air_pressure']) for record in data]