Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy数组使用的循环比它应该使用的多。为什么?_Python_Arrays_Numpy_Timeit - Fatal编程技术网

Python numpy数组使用的循环比它应该使用的多。为什么?

Python numpy数组使用的循环比它应该使用的多。为什么?,python,arrays,numpy,timeit,Python,Arrays,Numpy,Timeit,印刷品: %timeit [i **2 for i in range(1000)] print('*******') %timeit np.arange(1000) ** 2 我的直觉是numpy应该在整个数组中迭代一次,并对每个元素求平方。那为什么timeit说numpy代码循环100000次。你的直觉是对的。但是%timeit在循环中执行您的命令N次,以获得良好的统计估计 您可以使用n选项指定循环数,如下所示: 1000 loops, best of 3: 376 µs per loop

印刷品:

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

我的直觉是numpy应该在整个数组中迭代一次,并对每个元素求平方。那为什么timeit说numpy代码循环100000次。

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

您可以使用
n
选项指定循环数,如下所示:

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

另请参见。

您尚未阅读
timeit
模块的功能。阅读文档!“循环”不是指您测试的代码做什么,而是指代码执行的频率。循环计数是计时器执行的次数。对于花费较少时间的代码,计时器将运行更多次。您的第二个代码速度更快,因此计时器决定它运行更多的次数。文档说选项:-n:在循环中执行给定的语句次数。如果未给出该值,则选择拟合值。知道如何选择拟合值吗?@claudius它的选择使得总时间>=0.2秒。源代码-
%timeit -n1 arange(1, 100, .001)    # one loop
%timeit -n10 arange(1, 100, .001).  # ten loops