鉴于你的实施方式f
,我认为获得所需输出的唯一方法是直接访问所需的元素。当您传递值时a
and b
,两个表达式都在f
将被评估并在列表中返回(如您所定义的)。你可以检查f.func_doc
f.func_doc
"Created with lambdify. Signature:\n\nfunc(a, b)\n\nExpression:\n\n['a+cos(b)', 'a+cos(b)*2']"
Then
f(1, np.pi)
returns
[0.0, -1.0]
正如预期的那样,其中0.0
对应于a+cos(b)
and -1.0
to a+cos(b)*2
.
在您的示例中,您可以简单地执行以下操作:
[vali[i] for i, vali in enumerate(f(*vals))]
这会给你想要的输出:
[1.2836621854632262, 3.9203405733007317]
我想单独定义表达式而不是像您当前那样在列表中定义表达式会更容易,但我不知道您选择结构的原因:
from sympy import cos
f1 = lambdify((a, b), a+cos(b))
f2 = lambdify((a, b), a+cos(b)*2)
res = [np.array([f1(1, 5), f2(2, 6)])]
这使
[array([ 1.28366219, 3.92034057])]