Python-Numpy:卷积,代码优化

时间:2016-03-08 14:50:03

标签: python numpy optimization

在目前正在开发的python代码中,有一个特殊的功能确实需要速度优化。 对于第一个近似值,我想关注纯Python代码(没有C或Cython实现)。 该函数根据x轴位置生成一系列具有不同sigma的高斯曲线。它需要三个参数:

  1. x0,1d numpy数组,高斯曲线的中心值
  2. h,1d numpy数组,高斯曲线的高度
  3. x,1d numpy数组,总和的定义值
  4. 我的目标是以尽可能最快的方式获得所有曲线的总和(这是一种具有位置依赖西格玛的高斯曲线的卷积)。

    目前我的代码是:

    sigs = get_sigmas(x0)  # function that returns the value of sigma at each position
    
    all_gauss_args = -0.5*np.power((x[:, np.newaxis] - x0[np.newaxis, :]) /
                     sigs[np.newaxis, :], 2.0)
    
    sum = (1.0/(np.sqrt(2 * np.pi) * sigs[np.newaxis, :])) * np.exp(all_gauss_arg) *\
                 h[np.newaxis, :]
    
    sum = np.sum(sum, axis=1)
    return sum
    

    可以加快速度吗?

    提前感谢您的帮助

0 个答案:

没有答案