我有一个值列表,想将其转换为该列表的日志或将列表的日志传递给函数。我对 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
。它接受一个 float 或一个整数作为参数并输出一个 float :
> 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]
关于Python - 如何将列表转换为日志(列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47582264/