2

ラムダ関数を使用して関数を python 2.7 に、たとえば 2 つの変数の 2 番目に統合する以外の方法はありますか? たとえば、この例の関数を x に統合したいと思います。

import numpy as np
from scipy.integrate import quad

def sqrfn(a,x):
    return a*np.square(x)

これは、次の方法で簡単に実現できます。

quad(lambda x: sqrfn(2,x),0,10)

これを行う別の方法があるかどうか疑問に思っています。たとえば、似たようなものを使用するなど、はるかに直感的だと思います。

quad(sqrfn,0,10,args(a=2))

誰かが代替ソリューションを手に入れましたか?(ええ、関数を次のように定義して代わりにsqrfn(x,a)使用することもできますが、それは重要ではありません)。quad(sqrfn,0,10,args(2,))

4

2 に答える 2

1

これに使用できますfunctools.partial()

In [10]: f = functools.partial(sqrfn, 2)

これは次f(x)と同等になりsqrfn(2, x)ます:

In [11]: map(f, range(5))
Out[11]: [0, 2, 8, 18, 32]

あなたの例は次のようになります。

quad(functools.partial(sqrfn, 2), 0, 10)
于 2013-02-15T09:46:44.450 に答える
0
import functools
quad(functools.partial(sqrfn, 2), 0, 10)
于 2013-02-15T09:48:31.593 に答える