Python - 如何将列表转换为日志(列表)

标签 python list logarithm

我有一个值列表,想将其转换为该列表的日志或将列表的日志传递给函数。我对 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/

相关文章:

python - 在 Python 中使用标题大写字符串的问题

python - Django 对与外键对象相关的组进行排序

charts - 如何在 HighChart 中将轴从线性动态更改为对数

python - 正则表达式匹配函数参数

python - 如何使用文件中的生成器进行标记化而不是具体化字符串列表?

c++ - 无法制作指向自定义类型的指针列表

PYTHON - 在循环中创建多个列表

java - 如何使用 Jackson 读取 JSON 文件中的多个对象?

python - 使用 pyplot 中的箭袋函数绘制箭头的对数长度

Fortran 自然对数误差