python - 加速 Python Numpy 代码

标签 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 倍的加速。我能做什么?

最佳答案

你所做的看起来有点像卷积,所以我建议尝试使用卷积运算来实现它。可以使用基于 FFT 的方法非常高效地计算卷积,并在 SciPy 中以 scipy.signal.fftconvolve 的形式实现。

关于python - 加速 Python Numpy 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24133401/

相关文章:

python - 抓取具有多个链接的页面上的特定链接?

python - Python 中更好的方法链接方式?

python - 重复 os.path.isdir 调用中的巨大内存泄漏?

python - Pandas 。 2 列数据框。获取交集矩阵(全部到全部,来自第 #1 列)

python - 如何将 pandas 中的数据框设置为数字?

python - 并行化 python : multiprocessing vs cython

python - 使用 Python/Cython 编写二进制文件的更快方法

python - 自动为 cython 的 python 变量声明 c 类型

python - 是否有一个 python pickle 等效库可以转储 ascii 而不是二进制流?

python - 如何将大图像读取为 numpy.memmap 对象