【问题标题】:Fastest way to vectorize Gaussian CDF (or erf/erfc/etc.) on PyPy (i.e. no SciPy)在 PyPy(即无 SciPy)上矢量化高斯 CDF(或 erf/erfc/等)的最快方法
【发布时间】:2016-06-05 07:28:39
【问题描述】:

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

我在 PyPy 上没有 SciPy,所以我不能使用它。但是,我有 NumPy。

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

【问题讨论】:

    标签: python numpy gaussian pypy cdf


    【解决方案1】:

    如果您有 numpy,您可以将误差函数制成表格,进行插值(np.interp 或 roll-your-own),然后使用 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])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      • 1970-01-01
      相关资源
      最近更新 更多