如何在 lambdify 中使用字典
How to use dictionary with lambdify
我写了带有参数的 sympy 函数。例如,
ampl, freq, phase, cte, t =sp.symbols('ampl freq phase cte t')
func=sp.Function("Func")(t)
func=ampl*sp.cos(freq*t+phase)+cte
为了绘制这个函数,我以这种方式使用 lambdify :
funclamb=sp.lambdify([(ampl, freq, phase, cte) ,t],func)
xline=np.linspace(0,10,11)
yValues=funclamb((5, 4, 1.5, 12) ,xline)
plt.plot(xline,yValues)
但是,我必须注意元组中的元素顺序:(ampl, freq, phase, cte)。我想知道是否有在字典中使用这些参数的方法:
myParamDict={ampl: 5, freq: 4, phase: 1.5, cte: 12}
我尝试了不同的方法,但没有用。
# Help on function _lambdifygenerated:
_lambdifygenerated(_Dummy_23, t)
# Created with lambdify. Signature:
func(arg_0, t)
# Expression:
ampl*cos(freq*t + phase) + cte
# Source code:
def _lambdifygenerated(_Dummy_23, t):
[ampl, freq, phase, cte] = _Dummy_23
return ampl*cos(freq*t + phase) + cte
您必须提供 2 个参数,其中之一将 'unpack' 赋给 4 个变量。
具有如下功能:
In [5]: def foo(a,b,c):
...: print(a,b,c)
...: return None
...:
输入可以按位置,但也可以按名称或解压后的字典输入。
In [6]: foo(1,2,3)
1 2 3
In [7]: foo(b=3,c=1,a=1)
1 3 1
In [8]: d={'b':1,'c':2,'a':3}
In [9]: foo(**d)
3 1 2
这意味着您的函数可以通过以下方式调用:
In [10]: funclamb(t=np.array([1,2,3]),_Dummy_23=[1,2,3,4])
Out[10]: array([4.28366219, 4.75390225, 3.08886974])
根据 lambdify
表达式的定义,(ampl, freq, phase, cte)
变量必须作为 list/tuple.
提供
我写了带有参数的 sympy 函数。例如,
ampl, freq, phase, cte, t =sp.symbols('ampl freq phase cte t')
func=sp.Function("Func")(t)
func=ampl*sp.cos(freq*t+phase)+cte
为了绘制这个函数,我以这种方式使用 lambdify :
funclamb=sp.lambdify([(ampl, freq, phase, cte) ,t],func)
xline=np.linspace(0,10,11)
yValues=funclamb((5, 4, 1.5, 12) ,xline)
plt.plot(xline,yValues)
但是,我必须注意元组中的元素顺序:(ampl, freq, phase, cte)。我想知道是否有在字典中使用这些参数的方法:
myParamDict={ampl: 5, freq: 4, phase: 1.5, cte: 12}
我尝试了不同的方法,但没有用。
# Help on function _lambdifygenerated:
_lambdifygenerated(_Dummy_23, t)
# Created with lambdify. Signature:
func(arg_0, t)
# Expression:
ampl*cos(freq*t + phase) + cte
# Source code:
def _lambdifygenerated(_Dummy_23, t):
[ampl, freq, phase, cte] = _Dummy_23
return ampl*cos(freq*t + phase) + cte
您必须提供 2 个参数,其中之一将 'unpack' 赋给 4 个变量。
具有如下功能:
In [5]: def foo(a,b,c):
...: print(a,b,c)
...: return None
...:
输入可以按位置,但也可以按名称或解压后的字典输入。
In [6]: foo(1,2,3)
1 2 3
In [7]: foo(b=3,c=1,a=1)
1 3 1
In [8]: d={'b':1,'c':2,'a':3}
In [9]: foo(**d)
3 1 2
这意味着您的函数可以通过以下方式调用:
In [10]: funclamb(t=np.array([1,2,3]),_Dummy_23=[1,2,3,4])
Out[10]: array([4.28366219, 4.75390225, 3.08886974])
根据 lambdify
表达式的定义,(ampl, freq, phase, cte)
变量必须作为 list/tuple.