python - 在 PyPy 上矢量化高斯 CDF(或 erf/erfc/等)的最快方法(即没有 SciPy)

标签 python numpy gaussian pypy cdf

我正在尝试在 PyPy 上评估大量高斯函数的 CDF,但使用 math.erf 执行此操作的速度很慢。

我在 PyPy 上没有 SciPy,所以我无法使用它。不过,我有 NumPy。

除了编写自己的 C 扩展之外,在 PyPy 上执行此操作的最快方法是什么

最佳答案

如果您有 numpy,您可以将误差函数制成表格,进行插值(np.interp 或自行推出),然后使用 numpy 向量化运算一次评估多个值。

大致(这是在 CPython 上,我不确定 np.interp 在 numpypy 中是否有效),

>>> import math
>>> x = np.linspace(-3, 3, 101)    # example only, better use e.g. Chebyshev nodes
>>> y = [math.erf(_) for _ in x ]
>>> xval = [-0.1, 0.4, 0.9]
>>> np.interp(xval, x, y)
array([-0.11237943,  0.42808831,  0.79690821])

关于python - 在 PyPy 上矢量化高斯 CDF(或 erf/erfc/等)的最快方法(即没有 SciPy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37639492/

相关文章:

python - 在 Python 中读取文件的问题

python - 如何在 Python 2.7.2 中计算一组 GPS 卫星的 DOP 值?

image - 水平和垂直一维高斯滤波器

python - 从 Google App Engine 数据存储区获取随机记录?

Python httplib [多个请求] - 我可以保持连接打开多长时间?

python - 使用 K-Nearest 聚类颜色的有效方法

c# - 高斯平滑公式应用

python - Keras 中的 GaussianDropout 与 Dropout 与 GaussianNoise

Python:从导入的 css 文件中查找宽度

swift - 快速从 .npy 转换为 MLMultiArray 以进行 CoreML 预测