python - 在 Cython 的 cdef 语句中使用 scipy.integrate.quad?

标签 python function scipy cython numerical-integration

我试图通过将 Python 翻译成 Cython 来加速它。它使用函数 scipy.integrate.quad,该函数需要一个可调用的 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 函数的包装器,请尝试直接从 pyx 文件调用 C 函数 (创建一个包装 scipy C 模块的 pxd)。
  • 如果是纯Python,请尝试将其转换为cython。

否则,您必须使用其他一些纯 C 集成函数并跳过 scipy 函数。

关于python - 在 Cython 的 cdef 语句中使用 scipy.integrate.quad?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6835209/

相关文章:

python - 如何在测试脚本之外访问标记列表

python - Django ORM - 没有级联删除多对多关系

Python pandas - value_counts 无法正常工作

python - 为什么Python解释器在用作字典键时认为2.0和2是相同的

python - Numpy:如何查询多个多维数组?

python - 嵌套Python字典

c - 定义函数并传递结构值

C++:按 vector 大小重载函数

python - 如何强制 scipy.optimize.fmin_l_bfgs_b 使用 'dtype=float32'

python - 导入错误 : Could not import the Python Imaging Library (PIL) required to load image files