Aller plus loin avec numpy

Introduction

Matplotlib nous permet donc de tracer facilement des graphiques à partir des données en liste.

A partir de mesures, c'est donc facile.

Mais pour d'autres usages, par exemple si on souhaite tracer une courbe à partir d'une équation, l'opération se complique (il faudrait calculer toutes les valeurs via une boucle notamment, comme ce qui a été fait pour la chute théorique d'une balle).

Pour répondre à ce besoin, on utilise la bibliothèque numpy, qui permet la création de tableaux, propres à numpy et très similaire à des listes, mais fonctionnant parfaitement avec matplotlib.

Au fil du temps, les deux modules sont devenus très liés, on trouve donc des exemples où numpy est utilisé sans qu'il soit indispensable, juste car c'est devenu une habitude.

Comme matplotlib, on utilise un alias pour numpy. Traditionnellement c'est "np" qui est utilisé.

import numpy as np

Tableaux numpy

Numpy utilise des tableaux (array). A la différence des listes, chaque donnée est du même type.

On défini un tableau ainsi :

np.array([1,2,3])
# créer un tableau à partir de la liste

Quelques commandes utiles

np.arange(start,stop,step) : génère un tableau de "start" à "stop" avec un pas donné. (similaire à range pour les listes)

>>> np.arange(0,10,4)
array([0, 4, 8])

np.linspace(start,stop,nb) : génère un tableau de start à stop avec nb valeurs. Le pas est calculé automatiquement

>>> np.linspace(0,10,4)
array([ 0.,3.33333333,6.66666667, 10.])

Par défaut les valeurs sont des float. On peut préciser le type en spécifiant une option dtype = ...

>>> np.linspace(0,10,4,dtype=int)
array([ 0,  3,  6, 10])

Concrètement, quelle utilité ?

Numpy permet de calculer plus facilement des valeurs à partir d'un tableau de donnée.

Par exemple, pour tracer rapidement la courbe f(x) = exp(x) sur l'intervalle [-5;5] :

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-5,5,100) #On défini l'intervalle
plt.plot(x,np.exp(x)) #On configure les données. La Numpy va appliquer la fonction à tout le tableau des x.
plt.show() 

Pour la physique par exemple, si on souhaite représenter l'évolution de l'énergie cinétique d'un objet de masse m = 80kg, de vitesse comprise entre 0 et 20m/s, on fera :

m = 80
v = np.linspace(0,20,100)
plt.plot(v,0.5*m*v**2)
plt.show()

Avec des listes (donc sans Numpy), il faudrait calculer les valeurs en amont, via des boucles. Numpy permet donc de simplifier les calculs sur des données contenus dans une liste/un tableau.

Numpy contient déjà des fonctions de math : exp, sin, etc... Il est donc inutile de charger le module math.

Enfin, numpy permet également de gérer des matrices, d'extraire facilement des données, etc. Je vous invite à consulter la documentation pour en découvrir plus.

https://numpy.org/devdocs/

Last updated

Was this helpful?