擅长:python、mysql、java
<p>Python<code>for</code>循环天生就比C循环慢。</p>
<p>这就是为什么<code>numpy</code>在<code>numpy</code>数组上提供矢量化操作的原因。它将Python中通常执行的<code>for</code>循环推到C级,这要快得多。<code>numpy</code>提供了矢量化的(“C级别<code>for</code>循环”)替代方法,否则需要以元素方式完成(“Python级别<code>for</code>循环)。</p>
<pre><code>import numpy as np
from timeit import Timer
li = list(range(500000))
nump_arr = np.array(li)
def python_for():
return [num + 1 for num in li]
def numpy_add():
return nump_arr + 1
print(min(Timer(python_for).repeat(10, 10)))
print(min(Timer(numpy_add).repeat(10, 10)))
# 0.725692612368003
# 0.010465986942008954
</code></pre>
<p>矢量化的加法速度快了x70倍。</p>