【发布时间】:2018-07-04 09:57:46
【问题描述】:
我有一个关于 Python 循环速度的问题。 我创建了以下循环来填充数组中的值,但速度很慢。 有没有办法让它处理得更快?
winW = 1
winH = 200
runlength = np.zeros(shape=(img.shape[0], img.shape[1]))
for y in range(0, img.shape[0] - winH, 1):
for x in range(0, img.shape[1] - winW, 1):
runlength[y, x] += np.sum(img[y:y + winH, x:x + winW]) / (winH * winW)
runlength[y + winH, x] += np.sum(img[y:y + winH, x:x + winW]) / (winH * winW)
感谢您的帮助
编辑:我准确地说我只能使用 numpy 而不能使用 scipy
【问题讨论】:
-
如果您的代码运行没有错误并产生预期的输出,那么在Code Review 上询问可能更合适。代码优化是明确的主题。
-
@Mar:winW一直是1吗??
-
您可以尝试使用 Cython 的 Numba 进行循环加速,但不一定会有很大帮助,但谁知道呢。
-
@blue_note 是的 winW 总是 1
-
@usr2564301,这种“矢量化”是
numpy在 SO 上最常见的问题之一。 CR 答案倾向于更多地关注风格。但是,如果您是积极的 CR 参与者,并且有贡献的答案...
标签: python performance loops numpy