我有以下代码:
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_k
是 complex64
1280x960。
此代码相当于 1024 次 640x480 矩阵乘法并转换为 Complex64。
这段代码在我的 MacBook 上运行大约需要 2 秒;我希望尝试获得 100 倍的加速。我能做什么?
最佳答案
你所做的看起来有点像卷积,所以我建议尝试使用卷积运算来实现它。可以使用基于 FFT 的方法非常高效地计算卷积,并在 SciPy 中以 scipy.signal.fftconvolve
的形式实现。
关于python - 加速 Python Numpy 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24133401/