python - Cython 会加速 erf() 计算吗?

标签 python matlab scipy cython

我正在考虑从 MATLAB 转向 Python。我的 MATLAB 代码的核心在几千个数字的数组上重复调用 erf,例如:

r=rand(1,1e5)

erf(r)

这是我在 Python 中的实现:

import numpy as np
import scipy.special as sps

r=np.random.rand(1e5)

sps.erf(r)

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

最佳答案

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

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

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

关于python - Cython 会加速 erf() 计算吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29170588/

相关文章:

matlab - 生成随机点 - 限制总面积中每 block 瓷砖的数量

numpy - numpy/scipy 特征分解的不稳定结果

python - 无法使用 scipy 读取 MAT 文件

python - 如何将字典列表合并到一个字典

python : map (新对象,[参数])

python - 在 Pyqtgraph 中绘制交互式时间跟踪器

python - cProfile 命令行如何减少输出

linux - 在 ubuntu16.4 上安装 MATLAB 2017 时出现 Permission denied 错误

matlab - 为什么旋转代码会导致我的 LU 分解失败?

python - 迭代调用 stats.norm.pdf() 运行缓慢