我想做这样的事情
def gaussian(x, amp):
return amp * exp(-(x-cen)**2 /wid)
我想用amp和x代替并获得一个等式作为输出
例如:
gaussian(1,3)
3 * exp(-(1-cen)**2 /wid)
作为输出。
我是否可以针对几个列表执行此操作,其中一个值为振幅a和另一个x各个值
答案 0 :(得分:4)
我不确定你的意思"我需要一个等式"。你需要一些你可以评估的东西吗?然后可能你可以返回一个lambda对象,然后你可以评估它。或者你可以使用像:
这样的闭包import math
def gaussian(x, amp):
def _gauss( cen,wid):
return amp * math.exp(-(x-cen)**2 /wid)
return _gauss
g = gaussian(10,1)
print g(2,4)
g现在是一个可调用的函数,其中x和amp已被替换,所以你只需要传递cen和wid
之所以这样做是因为每次调用包装函数时都会对内部函数_gauss进行求值,这样就可以使用父函数传递的参数来评估函数,并将其用作"静态&#34 ;.从那以后,你返回一个你可以评估它并传递所有参数的函数,这是一个常用的技术,当库强制你有参数回调时。 只有简单的函数调用才能回退,即生成子函数,而不是评估它。
答案 1 :(得分:1)
我会将您的return
转换为字符串:
def gaussian(x, amp):
return str(amp) + '* exp(-(' + str(x) + '-cen)**2 /wid)'
这应该返回你想要的值:
gaussian(1,3)
返回
'3 * exp(-(1-cen)**2 /wid)'