【发布时间】:2016-02-07 04:03:42
【问题描述】:
考虑以下函数:
def dostuff(n, f):
array = numpy.arange(0, n)
for i in range(1, n): # Line 1
array[i] = f(array[i-1], array[i]) # Line 2
return numpy.sum(array)
如何重写第 1 行/第 2 行以使 python 3 中的循环更快(不使用 cython)?
【问题讨论】:
-
你看过
numpy.vectorize吗?文档说这主要是为了方便,但在某些情况下可能会有所收获。 -
你将如何使用 Python 向量化来做到这一点?
-
你的函数
f完全是自定义函数吗?或者它可能由numpy在某处实现?你能分享一下它的实现吗 -
f 可以是任何取两个整数并返回一个整数
-
在我看来,用例过于简单,无法真正利用
numpy的优势。我没有计时,但也许像sum(f(x, x+1) for x in range(n-1))这样的东西实际上会更快?
标签: python loops numpy optimization numpy-ufunc