numpy 数组使用了比应有的更多的循环。为什么?
numpy array using more loops than it should. why?
%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 次。
你的直觉是对的。但是 %timeit
循环执行你的命令 N 次以获得良好的统计估计。
您可以使用 n
选项指定循环次数,例如:
%timeit -n1 arange(1, 100, .001) # one loop
%timeit -n10 arange(1, 100, .001). # ten loops
%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 次。
你的直觉是对的。但是 %timeit
循环执行你的命令 N 次以获得良好的统计估计。
您可以使用 n
选项指定循环次数,例如:
%timeit -n1 arange(1, 100, .001) # one loop
%timeit -n10 arange(1, 100, .001). # ten loops