评估数学表达式数组的最快方法

问题描述 投票:0回答:1

我有一个包含 Sympy 表达式的数组,如下所示:

np.Array([A + B, C + D - 2.0*E + 10, ...])

表达式可以改变,执行时间在这里非常重要。 我在字典中有 A、B、C、D 的值。值是可迭代的,例如

A = [1,2,3,4]

计算每个表达式的最快方法是什么? eval 和lambify 哪个更快?有矢量化的方法来做到这一点吗?

python numpy sympy
1个回答
0
投票

你可以使用动态变量的概念来做到这一点,甚至不需要 numpy。

dct = {'A':2, 'B':4, 'C':5, 'D':6, 'E':2}

#Iterate over the dct
for key,value in dct.items():

    #make keys as variable names
    dynvar = key
    
    #make the values as variable-values
    globals()[dynvar] = value
    
#Change the expressions according to your requirement
x = [A + B, C + D - 2.0*E + 10, D*E,]

print(x) #Output: [6, 17.0, 12, 4]
© www.soinside.com 2019 - 2024. All rights reserved.