import numpy as np
L = list(range(15))
a = np.array(L)
# python classique avec compréhension
res=[x**2 for x in L]
res
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196]
# python avec un array numpy
[x**2 for x in a]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196]
# "vectorisation" de l'array numpy (opérateur **)
res=a**2
res
array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196])
import numpy as np
L = list(range(1000))
a = np.array(L)
# python classique avec compréhension
%timeit [x**2 for x in L] # 300 micro-sec
# python avec un array numpy
%timeit [x**2 for x in a] # un peu plus rapide : 200
# "vectorisation" de l'array numpy (opérateur **)
%timeit a**2 # beaucoup plus rapide : 1,5
30.9 ms ± 3.11 ms per loop (mean ± std. dev. of 7 runs, 10 loops each) 22.2 ms ± 298 µs per loop (mean ± std. dev. of 7 runs, 10 loops each) 52.3 µs ± 484 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)