What is vectorization?

Jairus Patrick Vallon picture Jairus Patrick Vallon · Dec 11, 2017 · Viewed 29.2k times · Source

What does it mean to vectorize for-loops in Python? Is there another way to write nested for-loops?

I am new to Python and on my research, I always come across the NumPy library.

Answer

DeepSpace picture DeepSpace · Dec 11, 2017

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.