纯粹的python比元素操作上的numpy更快?

时间:2014-01-28 07:10:41

标签: python numpy

有人可以向我解释这些结果吗?纯Python似乎花费的时间少于 元素指数的numpy表达式。

In [224]: ar=np.arange(1000)
          %timeit a**4
          100000 loops, best of 3: 5.22 µs per loop
In [225]: ar=range(1000)
          %timeit [ar[i]**4 for i in ar]
          1000 loops, best of 3: 205 µs per loop

Numpy总时间= 100000 * 5.22 =522000μs

纯Python总时间= 1000 * 205 =205000μs

2 个答案:

答案 0 :(得分:4)

纯Python版本的定时时间较少。这并不意味着它更快;这意味着timeit停止运行它,因此获取结果不需要60秒*。您可以从每个循环时间看到NumPy版本快40倍。

*每个循环200微秒* 100,000个循环* 3个重复的定时过程

答案 1 :(得分:1)

您将1,000次运行的结果与100,000次运行的结果进行比较。 numpy版本运行100,000次,每次耗时5.22μs。 Python版本只运行了1,000次,每个循环花费了205μs。

因此,虽然整体时间可能更大,但numpy的个体每次手术时间减少了约40倍。