【发布时间】:2013-01-12 01:24:44
【问题描述】:
在特定轴上对数组求和时,专用数组方法array.sum(ax) 实际上可能比 for 循环慢:
v = np.random.rand(3,1e4)
timeit v.sum(0) # vectorized method
1000 loops, best of 3: 183 us per loop
timeit for row in v[1:]: v[0] += row # python loop
10000 loops, best of 3: 39.3 us per loop
向量化的方法比普通的for循环慢4倍以上!这里发生了什么 (wr)on(g),我不能相信 numpy 中的矢量化方法比 for 循环更快吗?
【问题讨论】:
-
你在比较苹果和橘子。第二个是在 1000 长 C 循环矢量化加法上的 3 项长 python 循环,第一个是(可能)1000 长 C,创建超过 3-4 项的循环。在第二种情况下,内存布局访问也更好,但差别不大。
-
换句话说...是的,您可以相信它会更快...但不要认为python那么慢以至于您无法在不等待年龄的情况下对3个项目执行for循环.. .
-
@seberg 我不同意苹果和橘子的观点:这里的 for 循环比
numpy.sum高效得多,这必须解释一下。
标签: python performance numpy vectorization