Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

contenu de ce notebook (sauter si déjà acquis)

qu’est-ce que la vectorisation ?

15.5 ms ± 2.36 ms per loop (mean ± std. dev. of 7 runs, 100 loops each)
90.7 ms ± 407 μs per loop (mean ± std. dev. of 7 runs, 10 loops each)

dessiner un cercle de rayon r

exercice

Dessinez un cercle de rayon r

indices

  1. x=r sin(θ)x = r\, sin(\theta)
    y=r cos(θ)y = r\, cos(\theta)
    avec θ\theta variant de 0 à 2π2\pi

  2. si votre cercle apparaît elliptique, c’est que les échelles de vos axes diffèrent
    demandez à ce qu’elles soient égales avec plt.axis('equal')

calculer une fonction polynomiale

exercice

  1. faites une fonction qui retourne le calcul d’un polynome
    par exemple x3+2x2−5x+1x^3 + 2x^2 -5x +1
    (puissance: ** ou np.power)

  2. appliquez la directement à un np.ndarray (sans faire de for) qu’obtenez-vous en retour ?

  3. tracez la courbe de la fonction

The history saving thread hit an unexpected error (OperationalError('database is locked')).History will not be written to the database.

les ufunc

qu’est-ce qu’une ufunc


quelles sont les fonctions vectorisées ?


savoir si une fonction est une ufunc

<ufunc 'power'>

exercice

  1. la fonction numpy.abs est-elle une ufunc ?

  2. la fonction abs de Python est-elle une ufunc ?

pour vectoriser une fonction

exercice

  1. écrivez une fonction qui calcule la valeur absolue d’un scalaire x absolute(x)
    on s’interdit donc, dans cet exercice, d’utiliser des fonctions de numpy, ni la fonction builtin abs de Python

  2. testez votre fonction sur des scalaires

  3. créez un np.ndarray de scalaires et appliquez-lui la fonction

  4. que se passe-t-il ?

problème de la fonction absolute

mais vous ne voulez rien de tout cela !

array([10. , 30. , 56.5])
array([10, 20, 30])

note sur les performances

2.28 ms ± 242 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)
259 μs ± 18.7 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)

pour les avancés ou les rapides

résultats intermédiaires lors de calculs


une solution aux tableaux intermédiaires

le code ci-dessous

<Figure size 640x480 with 1 Axes>
<Figure size 640x480 with 1 Axes>

temps d’exécution de l’élévation d’un tableau au carré - avancé ou rapide

exercice

  1. créez un tableau numpy des 10000 premiers entiers avec numpy.arange

  1. calculez le temps d’exécution de l’élévation au carré des éléments

    • a. avec un for-python

    • b. avec une compréhension Python

    • c. de manière vectorisée avec **2

    • d. de manière vectorisée avec np.power

    • e. de manière vectorisée avec np.square

  1. quelles sont les manières de faire les plus rapides ?

  1. utilisez np.vectorize pour décorer votre fonction 2.c; que constatez-vous ?