加速Python Numpy代码

时间:2014-06-10 05:20:37

标签: python numpy cython

我有以下代码:

big_k = gabor((height * 2, width *2), (height, width))
for r_slice in range(0,radialSlices):
  r_pixels = r_slice * radialWidth
  for a_slice in range(0,angularSlices):
    a_pixels = a_slice * angularWidth
    k_win = big_k[height - r_pixels:2*height - r_pixels,width - a_pixels:2 * width - a_pixels]
    result = np.sum(img * k_win)

img是一个640x480的uint8数组,big_kcomplex64 1280x960。

此代码相当于1024 640x480矩阵乘法和转换为complex64。

此代码在我的macbook上运行大约2秒;我想尝试获得100倍的加速。我该怎么办?

1 个答案:

答案 0 :(得分:2)

您正在做的事情看起来像卷积,所以我建议尝试使用卷积操作来实现它。使用基于FFT的方法可以非常有效地计算卷积,并在SciPy中实现为scipy.signal.fftconvolve