Semaine 3 - Jour 2 - 420-SN1

OUTILS MATHEMATIQUES

Calculer vite et juste sur des milliers de nombres avec numpy

Le calcul scientifique, c'est ENORME

Une sonde renvoie des milliers, des millions de mesures. Les traiter une par une dans une boucle Python devient :

(1) lent - Python repete la boucle pas a pas.

(2) verbeux - beaucoup de lignes pour une idee simple.

Les scientifiques utilisent des outils dedies, ecrits pour aller vite et tenir en une ligne.

  • Le module math : 1 nombre a la fois
  • La librairie numpy : des tableaux entiers d'un coup
  • Tous deux deja installes dans Colab
PARTIE A

Le module math : les fonctions savantes

Pour un seul nombre, le module math apporte les fonctions que la calculatrice scientifique connait : racine, sinus, logarithme, et les constantes comme pi.

Une calculatrice scientifique en Python

import math rayon = 5 aire = math.pi * rayon ** 2 diagonale = math.sqrt(3**2 + 4**2) # 5.0 print(math.sin(math.pi / 2)) # 1.0

math.pi et math.e sont des constantes tres precises.

math.sqrt, math.sin, math.cos, math.log sont des fonctions : on leur donne un nombre, elles en renvoient un.

Attention : les angles sont en radians, pas en degres.

PARTIE B

numpy : calculer sur tout un tableau

Quand on a beaucoup de nombres, on les range dans un tableau numpy et on calcule sur tout le tableau d'un seul geste.

Le tableau numpy

import numpy as np mesures = np.array([12.1, 12.4, 11.9, 12.0, 12.3]) print(mesures) print(type(mesures)) # numpy.ndarray

On part d'une liste Python et on la transforme en tableau numpy avec np.array(...).

Ca ressemble a une liste, mais c'est un nouvel objet bien plus rapide pour le calcul, qui ne contient que des nombres.

Convention universelle : on importe numpy sous le petit nom np.

La vectorisation : zero boucle

Avant - avec une boucle

celsius = [0, 20, 37, 100] kelvins = [] for valeur in celsius: kelvins.append(valeur + 273.15)

Avec numpy - une ligne

celsius = np.array([0, 20, 37, 100]) kelvins = celsius + 273.15 doubles = celsius * 2

Une operation sur un tableau numpy s'applique a tous les elements en meme temps. Pas de boucle, pas de append : c'est la vectorisation, le coeur de tout le calcul scientifique.

Fabriquer des tableaux reguliers

np.arange(0, 10, 2) # [0 2 4 6 8] np.linspace(0, 1, 5) # [0. 0.25 0.5 0.75 1. ] np.zeros(4) # [0. 0. 0. 0.]

arange(debut, fin, pas) : comme range, mais accepte les pas decimaux.

linspace(debut, fin, nombre) : un nombre choisi de points regulierement espaces - parfait pour tracer une courbe lisse.

zeros et ones : un tableau rempli de 0 ou de 1, pret a recevoir des resultats.

Les statistiques en une ligne

mesures = np.array([12.1, 12.4, 11.9, 12.0, 12.3]) np.mean(mesures) # moyenne np.median(mesures) # mediane np.std(mesures) # ecart-type np.min(mesures) # minimum np.max(mesures) # maximum

Les memes indicateurs que la semaine derniere (moyenne, mediane, ecart-type), mais calcules directement sur le tableau.

Plus besoin de sum(...) / len(...) ni du module statistics : numpy fait tout, sur des millions de valeurs sans ralentir.

Une fonction sur tout un tableau

import numpy as np import matplotlib.pyplot as plt angles = np.linspace(0, 2 * np.pi, 200) valeursSinus = np.sin(angles) plt.plot(angles, valeursSinus) plt.title("Sinus trace avec numpy") plt.show()

np.sin applique le sinus a chacun des 200 points d'un coup.

On obtient une courbe parfaitement lisse, sans ecrire la moindre boucle.

linspace + fonction numpy + plot = la recette pour tracer n'importe quelle fonction mathematique.

math ou numpy : lequel choisir ?

math

  • UN seul nombre
  • math.sqrt(2)
  • math.pi, math.e
  • un calcul ponctuel

numpy

  • UN tableau de nombres
  • np.sqrt(mesures)
  • stats sur tout le tableau
  • des milliers de valeurs

Regle simple : un nombre tout seul ? le module math suffit. Beaucoup de nombres ? on passe a numpy et a la vectorisation.

Le moteur du Projet 3

Pour le Projet 3 - Mission Espace, numpy est l'outil ideal pour analyser un vrai jeu de donnees scientifiques de facon efficace et concise. Mais tu n'es pas oblige de l'utiliser : le choix des outils te revient.

Charger les mesures, les resumer, leur appliquer une fonction, tracer le resultat : tout ce qu'on vient de voir devient ta boite a outils du programme integrateur, que tu passes par numpy ou par des listes et des boucles.

AU TRAVAIL !

En savoir plus : code.experimentations.xyz/en-savoir-plus/applications-scientifiques/
Seance 3-2 : vectorise tes mesures et trace une fonction avec numpy
⤺ Refermer le diaporama