【发布时间】:2014-10-16 10:44:04
【问题描述】:
我尝试使用带有索引变量的 Sum 创建一个 sympy 表达式,如前所述 here 但是,我不能对这个表达式进行lambdify 并给出一个数组来计算总和。 这不可能吗?
【问题讨论】:
我尝试使用带有索引变量的 Sum 创建一个 sympy 表达式,如前所述 here 但是,我不能对这个表达式进行lambdify 并给出一个数组来计算总和。 这不可能吗?
【问题讨论】:
大概是这样的?
>>> s=Sum(Indexed('x',i),(i,1,3))
>>> f = lambda x: Subs(s.doit(), [s.function.subs(s.variables[0], j)
... for j in range(s.limits[0][1], s.limits[0][2] + 1)], x).doit()
>>> f((30,10,2))
42
【讨论】:
你可以使用lambdify。只需确保 sum 的限制与 numpy 数组的可迭代对象匹配即可。
from sympy import Sum, symbols, Indexed, lambdify
import numpy as np
x, i = symbols("x i")
s = Sum(Indexed('x',i),(i,0,3))
f = lambdify(x, s)
b = np.array([1, 2, 3, 4])
f(b)
【讨论】: