Python中数学公式的求值(使用自定义变量名和下标)
我需要为时间序列计算一组数学公式(字符串格式),例如:Python中数学公式的求值(使用自定义变量名和下标),python,math,Python,Math,我需要为时间序列计算一组数学公式(字符串格式),例如: " y = 0.5 * gdp[t] + 0.2 * ln( sp500[t-2] ) " 数学公式有两个元素我需要注意: 引用时间序列/数组的自定义变量名(例如gdp) 变量下标表示时间序列的指数,如t-1或t-2 是否有人有一种相对稳健/有效的方法来将该公式计算为给定输入的一个数字(例如t=5)。理想情况下,这是一个快速的方法,但这是一个奢侈品 我不确定您想如何使用gdp和sp500,但这是一个使用eval的示例: import
" y = 0.5 * gdp[t] + 0.2 * ln( sp500[t-2] ) "
数学公式有两个元素我需要注意:
- 引用时间序列/数组的自定义变量名(例如
)gdp
- 变量下标表示时间序列的指数,如
或t-1
t-2
是否有人有一种相对稳健/有效的方法来将该公式计算为给定输入的一个数字(例如t=5)。理想情况下,这是一个快速的方法,但这是一个奢侈品 我不确定您想如何使用
gdp
和sp500
,但这是一个使用eval
的示例:
import math
s = "0.5 * gdp[t] + 0.2 * ln( sp500[t-2] ) "
gdp = [0,1,2,3,4,5]
sp500 = [0,1,2,3,4,5]
t = 5
ln = lambda x: math.log(x)
y = eval(s)
print y # prints 2.71972245773
您是否考虑过使用
eval
?eval是否将括号作为带索引的数组进行计算?只要括号前面是一个列表或实现\uu getitem\uuuuuuuuu
,是的eval
接受任意Python代码。您还可以使用其参数精确设置被求值代码将有权访问的对象/函数。再见,谢谢。不知道eval有能力解析数组。