[英]How to obtain a math function as an output in python
我想做這樣的事情
def gaussian(x, amp):
return amp * exp(-(x-cen)**2 /wid)
我只想替換amp和x並獲得一個方程作為輸出
例如:
gaussian(1,3)
3 * exp(-(1-cen)**2 /wid)
作為輸出。
我可以為幾個列表執行此操作嗎,在幾個振幅值中,另一個在各自的x中
我不確定您所說的“我需要一個方程式”是什么意思。 您是否需要評估? 然后可能您可以返回一個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進行評估,因此將使用父函數傳遞的參數對函數進行評估,並將其用作“靜態”。 從那時起,您就可以返回一個函數,然后對其求值並傳遞所有剩余的參數,這是一種常見的技術,適用於庫強制您使用parameterlles回調的情況。 僅退回就比簡單的函數調用(即生成子函數而不是對其求值)更昂貴。
我會將您的return
轉換為字符串:
def gaussian(x, amp):
return str(amp) + '* exp(-(' + str(x) + '-cen)**2 /wid)'
這應該返回您想要的值:
gaussian(1,3)
回報
'3 * exp(-(1-cen)**2 /wid)'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.