PythonをCythonに変換して、Pythonを高速化しようとしています。関数scipy.integrate.quadを使用します。この関数には、引数の1つとして呼び出し可能なPythonが必要です。Cythonのcdefステートメント内から関数を定義して渡す方法はありますか?これを使用できますか?
ありがとう。
PythonをCythonに変換して、Pythonを高速化しようとしています。関数scipy.integrate.quadを使用します。この関数には、引数の1つとして呼び出し可能なPythonが必要です。Cythonのcdefステートメント内から関数を定義して渡す方法はありますか?これを使用できますか?
ありがとう。
はい、Python関数で関数をラップする必要があります。
def py_callback(a):
return c_callback(a)
cdef float c_callback(float a):
return a * a
...
scipy.integrate.quad(py_callback)
もちろん、変換の過負荷が少しあります。別の方法は、その関数がどのように実装されているかを調べることです。
それ以外の場合は、他の純粋なC統合関数を使用して、scipy関数をスキップする必要があります。