lambda式

Pythonの「ラムダ文」が難しいww

 

import scipy.optimize as op

def lnprob(theta, ell_data, bee_data):

    lp = lnprior(theta)

    if not np.isfinite(lp):

        return -np.inf

    return lp + lnlike(theta, ell_data, bee_data)

 

    theta=[5.05, 250., -200., 1.1] #探索するパラメータの初期値。

    minus_lnprob = lambda theta,*args: -lnprob(theta,*args)

    result = op.minimize(minus_lnprob, theta, args=(ell_data, bee_data), method='TNC', bounds=bnds,  options={'maxiter': 10000,'xtol': 1e-6, 'ftol':1e-6})

    print(result)

    print(result["x"])

 

試行錯誤の末、上記に辿り着き、なんとかうまく行ったが、理解できないww

    minus_lnprob = lambda theta,*args: -lnprob(theta,*args)

の部分は

def minus_lnprob(theta, ell_data, bee_data):

    return -lnprob(theta, ell_data, bee_data)

と同値のようである。