Python 在PyPy上矢量化高斯CDF(或erf/erfc/等)的最快方法(即无SciPy)
我试图在PyPy上计算许多高斯函数的CDF,但使用Python 在PyPy上矢量化高斯CDF(或erf/erfc/等)的最快方法(即无SciPy),python,numpy,gaussian,pypy,cdf,Python,Numpy,Gaussian,Pypy,Cdf,我试图在PyPy上计算许多高斯函数的CDF,但使用math.erf进行计算很慢 我在PyPy上没有SciPy,所以我不能用它。然而,我有NumPy 除了编写自己的C扩展名之外,我在PyPy上执行此操作的最快方法是什么?如果您有numpy,您可以将错误函数制成表格,插值(np.interp或自己滚动),然后使用numpy矢量化操作一次计算多个值 大致上(这是在CPython上,我不确定np.interp是否在numpy中工作) >>> import math >>&g
math.erf
进行计算很慢
我在PyPy上没有SciPy,所以我不能用它。然而,我有NumPy
除了编写自己的C扩展名之外,我在PyPy上执行此操作的最快方法是什么?如果您有numpy,您可以将错误函数制成表格,插值(
np.interp
或自己滚动),然后使用numpy矢量化操作一次计算多个值
大致上(这是在CPython上,我不确定np.interp
是否在numpy中工作)
>>> 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])