Python for
loops are inherently slower than their C counterpart.
This is why numpy
offers vectorized actions on numpy
arrays. It pushes the for
loop you would usually do in Python down to the C level, which is much faster. numpy
offers vectorized ("C level for
loop") alternatives to things that otherwise would need to be done in an element-wise manner ("Python level for
loop).
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
The numpy
vectorized addition was x70 times faster.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…