Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中数学公式的求值(使用自定义变量名和下标)_Python_Math - Fatal编程技术网

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有能力解析数组。