Cython会加速erf()计算吗?

Wil*_*ler 2 python matlab cython scipy

我正在考虑从MATLAB切换到Python.我的MATLAB代码的核心在几千个数字的数组上反复调用erf,如:

r=rand(1,1e5)

erf(r)
Run Code Online (Sandbox Code Playgroud)

这是我在Python中的实现:

import numpy as np
import scipy.special as sps

r=np.random.rand(1e5)

sps.erf(r)
Run Code Online (Sandbox Code Playgroud)

Python版本大约需要三倍的时间.如果我使用Cython来编译程序的这个核心,我会看到一个主要的加速吗?我没有很少的Python经验,也没有C经验,所以我想在尝试找出Cython之前我会在这里查看.

zwo*_*wol 6

我不希望Cython能够加快速度.所有费时的工作正在内部完成sps.erfnp.random.rand; Python解释器只是传递数组.

在MATLAB术语中,当您无法完全向量化计算时,Cython最有可能提供帮助.

您可能需要考虑向SciPy开发人员报告此性能差异.也许有一个很容易修复的错误.