如何解决sympy lamdify 与 scipy curve_fit
我构建了一个 sympy 表达式 我使用 lamdify 转换为 numpy 函数,如下所示:
import sympy
from sympy.parsing.sympy_parser import parse_expr
x0,x1 = sympy.symbols('x0 x1')
a,b,c = sympy.symbols('a b c')
func=parse_expr('a*x0 + b*x1 + c*x0*x1')
p = [x0,x1,a,c]
npFunc = sympy.lambdify(p,func,'numpy')
但是当我使用 scipy 的 curve_fit 将 npFunc for (a,c) 与两个自变量 x0 和 x1 拟合时,它失败了。我不知道如何使用 lamdify 使 npFunc 像这样工作(解包):
def npFunc(X,c):
x0,x1 = X
return a*x0 + b*x1 + c*x0*x1
我该怎么做?
解决方法
函数的文档(使用 ipython
?
快捷方式)
In [22]: npFunc?
Signature: npFunc(x0,x1,a,b,c)
Docstring:
Created with lambdify. Signature:
func(x0,c)
Expression:
a*x0 + b*x1 + c*x0*x1
Source code:
def _lambdifygenerated(x0,c):
return (a*x0 + b*x1 + c*x0*x1)
使用建议替代方案:
In [23]: p = [[x0,x1],c]
In [24]: npFunc = lambdify(p,func,'numpy')
In [25]: npFunc?
Signature: npFunc(_Dummy_22,c)
Docstring:
Created with lambdify. Signature:
func(arg_0,c)
Expression:
a*x0 + b*x1 + c*x0*x1
Source code:
def _lambdifygenerated(_Dummy_22,c):
[x0,x1] = _Dummy_22
return (a*x0 + b*x1 + c*x0*x1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。