使用更多循环的numpy数组。为什么呢?

时间:2017-08-19 09:41:00

标签: python arrays numpy timeit

%timeit [i **2  for i in range(1000)]
print('*******')
%timeit np.arange(1000) ** 2

打印:

1000 loops, best of 3: 376 µs per loop
*******
The slowest run took 11.43 times longer than the fastest. This could 
mean that an intermediate result is being cached.
100000 loops, best of 3: 2.76 µs per loop

我的直觉是numpy应该遍历整个数组一次并对每个元素进行平方。那么为什么timeit说numpy代码循环100000次。

1 个答案:

答案 0 :(得分:1)

你的直觉是正确的。但是%timeit在循环中执行你的命令N次,以获得良好的统计估计。

您可以使用n选项指定循环次数,例如:

%timeit -n1 arange(1, 100, .001)    # one loop
%timeit -n10 arange(1, 100, .001).  # ten loops

另请参阅documentation of %timeit