★ À maîtriser
Compléments
📌 Un éditeur de texte sert à écrire un programme, tandis qu’un traitement de texte comme MS-Word, LibreOffice ou OpenOffice n’est pas adapté à cet usage.
Interpréteur pour exécuter, éditeur pour écrire, IDE pour réunir les deux
📌 En Python, 42 crée un entier tandis que 42.0 crée un flottant, car la présence du point décimal détermine le type.
📌 Un nom de variable doit commencer par une lettre, peut contenir des lettres, des chiffres et le caractère souligné, respecte la casse et ne peut pas être un mot réservé.
📌 Une chaîne de caractères est immuable, tandis qu’une liste est mutable et permet la modification de ses éléments.
📌 Le découpage d’une séquence suit la syntaxe [indice_de_début : indice_de_fin : pas], avec une borne de fin exclue et la possibilité d’utiliser des indices négatifs.
Les chaînes et tuples sont immuables, les listes sont mutables
★ À maîtriser
La fonction type() renvoie le type d’une variable, tandis que print() affiche sa valeur dans un programme.
La fonction input() lit une saisie utilisateur et renvoie toujours une chaîne qui doit être convertie si une valeur numérique est attendue.
Les fonctions int(), float() et str() convertissent respectivement une valeur en entier, en flottant et en chaîne de caractères.
La fonction len() renvoie le nombre d’éléments d’une séquence, notamment le nombre de caractères d’une chaîne ou d’éléments d’une liste.
La fonction range() produit une séquence d’entiers dont la borne supérieure est exclue, selon les formes range(fin), range(début, fin) ou range(début, fin, pas).
Compléments
Lire avec input, convertir avec int ou float, mesurer avec len
★ À maîtriser
📌 Une instruction if exécute conditionnellement un bloc, tandis qu’une boucle répète un bloc plusieurs fois ou jusqu’à ce qu’une condition soit satisfaite.
🔄 Une structure conditionnelle suit généralement ces étapes:
Une boucle for parcourt les valeurs d’un objet itérable, éventuellement générées par range(), tandis qu’une boucle while répète les instructions tant que sa condition est vraie.
📌 Dans une boucle while, le test est effectué avant la première itération, si bien qu’une condition initialement fausse empêche toute exécution du bloc.
📌 L’instruction break quitte immédiatement la boucle, tandis que continue saute le reste de l’itération courante et passe à la suivante.
Compléments
📌 La clause else associée à une boucle s’exécute lorsque toutes les itérations sont terminées sans break.
Tester avec if, répéter avec for ou while, interrompre avec break
★ À maîtriser
📌 Une variable locale n’est visible qu’à l’intérieur de la fonction, tandis qu’une variable globale doit être déclarée avec global dans la fonction pour être accessible depuis le programme principal.
Compléments
📌 Une fonction doit être définie ou importée avant son utilisation, car l’interpréteur Python la stocke en mémoire au moment de sa définition.
📐 Formule — La fonction volume_sphere calcule le volume d’une sphère avec en appelant une fonction cube.
Procédure affiche, fonction retourne
📌 Dans l’instruction for i in range(10), i est un itérateur et range(10) est un générateur qui crée un objet itérable de type range.
📌 L’instruction yield distingue une fonction génératrice d’une fonction normale en indiquant la valeur fournie à l’itérateur.
📌 L’affectation b = a copie seulement la référence vers l’objet, donc modifier un objet mutable par b modifie aussi l’objet désigné par a.
Mutable se modifie sur place, immutable change de référence
★ À maîtriser
📌 La syntaxe import math conserve l’espace de noms math, tandis que from math import sqrt permet d’utiliser sqrt sans préfixe.
Compléments
📌 L’importation avec from mes_fonctions import * est déconseillée car elle augmente inutilement la mémoire utilisée et peut provoquer des conflits de noms.
Un module est une boîte de fonctions, un package une armoire de modules
★ À maîtriser
Dans NumPy, axis=0 correspond généralement aux lignes verticales, axis=1 aux colonnes horizontales, axis=2 à la profondeur et axis=-1 au dernier axe.
numpy.array([[0,1,2],[3,4,5]]) crée un tableau à deux dimensions de shape (2, 3) et de size 6.
Compléments
📐 Formule — Pour un tableau NumPy, le nombre total d’éléments vérifie .
numpy.arange(15).reshape(3,5) crée les valeurs de 0 à 14 puis les réorganise en un tableau de 3 lignes et 5 colonnes.
numpy.linspace(0,2,9) crée 9 valeurs régulièrement espacées entre 0 et 2, avec la borne finale incluse contrairement à range().
ndim → shape → size
★ À maîtriser
📌 Une tranche NumPy crée une vue sur le tableau original et non une copie profonde, tandis que numpy.array(b) crée une copie indépendante.
📌 La concaténation NumPy exige que les tableaux aient le même nombre de dimensions, sauf lorsqu’ils sont aplatis avec axis=None.
📌 Le stacking NumPy ressemble à la concaténation mais ajoute un nouvel axe, tandis que numpy.hstack, numpy.vstack et numpy.dstack empilent respectivement horizontalement, verticalement et en profondeur.
Compléments
Pour concaténer un vecteur avec une matrice, il faut transformer le vecteur en tableau à une ligne ou à une colonne avec numpy.newaxis.
numpy.tile(a, (2,2)) répète un vecteur deux fois verticalement et deux fois horizontalement, en créant un tableau à deux dimensions.
Concaténation conserve les axes, stacking crée un nouvel axe
★ À maîtriser
📌 numpy.stack empile des tableaux selon un nouvel axe, tandis que numpy.concatenate concatène selon un axe existant ; numpy.hstack, numpy.vstack et numpy.dstack sont des variantes respectivement horizontale, verticale et en profondeur.
Compléments
Deux vecteurs 1-D de shape=(2,) empilés avec numpy.stack forment un tableau 2-D de shape=(2,2), et numpy.column_stack permet de former une matrice de shape=(N,M) à partir de N vecteurs de dimension M.
Pour un vecteur a=np.array([0,1,2]), np.tile(a,(4,1)) produit quatre lignes identiques de shape=(4,3), tandis que np.tile(a,(2,1,2)) crée un tableau de shape=(2,1,6).
Ajouter une dimension, empiler, répéter, puis réduire
★ À maîtriser
Les opérateurs +, -, *, ** et / s’appliquent élément par élément lorsque les tableaux ont la même taille, ce qui permet d’éviter des boucles Python explicites.
Pour combiner deux tableaux booléens élément par élément, il faut utiliser &, | et ~, car les opérateurs Python and, or et not ne sont pas des opérateurs élément par élément pour les tableaux.
numpy.dot effectue un produit scalaire pour deux tableaux 1-D et une multiplication matricielle pour deux tableaux 2-D, tandis que numpy.matmul ou l’opérateur @ sont préférables pour cette dernière opération.
Le broadcasting permet d’effectuer une opération entre des tableaux de formes différentes lorsque NumPy peut les transformer conceptuellement vers une forme commune, par exemple en ajoutant directement un vecteur de shape=(3,) à chaque ligne d’une matrice de shape=(4,3).
Un masque booléen de même dimension qu’un tableau permet de sélectionner uniquement les éléments correspondant à True et d’appliquer une opération à cette sélection.
Compléments
Les principales réductions NumPy sont:
numpy.flatnonzero renvoie les indices des éléments non nuls d’un tableau aplati, tandis que numpy.union1d et numpy.intersect1d calculent respectivement l’union et l’intersection de deux ensembles d’indices.
Dans l’exemple de dix millions de particules, le calcul vectorisé du centre de masse avec numpy.sum prend environ 0,484375 seconde, contre 25,40625 secondes avec des boucles correctement ordonnées.
Vectorisation → calculs plus rapides sans boucles explicites
★ À maîtriser
🔄 La séquence usuelle est:
La fonction plot(x,y) trace une courbe à partir des abscisses x et des ordonnées y, tandis que legend() affiche les étiquettes préparées avec l’argument label de plot().
Compléments
Les fonctions de personnalisation sont:
La fonction subplot() permet d’afficher plusieurs graphiques dans une même fenêtre en indiquant notamment le nombre de lignes, le nombre de colonnes et la position du tracé.
figure → plot → show → close
★ À maîtriser
📌 scatter() représente des points sans les relier et permet de modifier leur taille, leur couleur et leur symbole, tandis que plot() est principalement utilisé pour tracer des courbes reliées.
Compléments
Dans matplotlib.pyplot.hist, bins vaut 10 par défaut lorsqu’il est fourni comme entier, density=True transforme les effectifs en densité de probabilité dont l’intégrale vaut 1, et la fonction renvoie trois éléments.
Pour un maillage de coordonnées X et Y, les valeurs d’une grandeur Φ sont stockées dans un tableau 2-D Phi[i,j] correspondant à Φ(xi,yj), puis les fonctions contour, contourf, imshow, pcolor ou pcolormesh peuvent les représenter.
scatter pour des points, hist pour une distribution, contour pour une surface
★ À maîtriser
plt.contour trace des courbes de niveau à partir des coordonnées Xxp, Yyp, du champ Phi et de niveaux régulièrement espacés entre Phi.min() et Phi.max().Compléments
La commande plt.contourf colore les zones comprises entre les courbes de niveau, tandis que l’argument cmap='rainbow' définit la palette utilisée.
La fonction plt.imshow affiche une matrice comme une image et, dans l’exemple, normalise Phi entre 0 et 1 avec ((Phi-Phi.min())/(Phi.max()-Phi.min())).
Les fonctions pcolor et pcolormesh représentent un champ sur un maillage coloré, et pcolormesh peut utiliser shading='gouraud' pour interpoler l’affichage.
La commande plt.axis([xmin,xmax,ymin,ymax],'equal') impose les limites des axes et une même échelle sur les deux dimensions.
Contours simples → valeurs → remplissage → image
★ À maîtriser
📐 Formule — Pour un signal échantillonné en N points séparés par δt, le pas fréquentiel vaut et les fréquences discrètes vérifient .
📐 Formule — La transformée de Fourier discrète est approximée par .
📐 Formule — La fréquence de Nyquist est la moitié de la fréquence d’échantillonnage et vérifie .
📌 Le théorème d’échantillonnage impose une fréquence d’échantillonnage au moins égale à deux fois la fréquence maximale contenue dans le signal pour éviter une représentation infidèle.
Compléments
Dans NumPy, numpy.fft.fft calcule la TFD, numpy.fft.ifft la TFD inverse, fftshift place la fréquence nulle au centre et fftfreq fournit les fréquences associées aux coefficients.
Pour un signal réel, les termes de fréquences négatives sont les conjugués complexes des termes positifs, ce qui permet d’utiliser numpy.fft.rfft et de réduire l’espace mémoire nécessaire.
Échantillonnage insuffisant → repliement spectral
★ À maîtriser
📌 La convolution peut être calculée par la transformée de Fourier inverse du produit des transformées de Fourier de g et h, soit .
📌 Pour calculer une convolution linéaire par TFD, il faut compléter chaque signal par des zéros jusqu’à une longueur au moins égale à N+M−1, sinon le calcul produit une convolution circulaire.
Compléments
Avec padding : convolution linéaire ; sans padding : convolution circulaire
En trois dimensions, la structure correspondante au quadtree est l’octree, dont le nombre de fils est lié à la subdivision en huit octants.
La courbe de Hilbert préserve généralement mieux la proximité spatiale que la courbe Z, car deux points proches sur la courbe restent plus souvent proches après le repliement.
Quadtree → k-d tree → courbes remplissant l’espace
Le module scipy.constants fournit des constantes mathématiques, des constantes physiques et des valeurs issues de la recommandation CODATA 2018, avec leur valeur, leur unité et leur incertitude.
La fonction numpy.loadtxt lit un fichier texte numérique organisé en N lignes et M colonnes homogènes, tandis que numpy.savetxt est adaptée à l’écriture de ce type de fichier.
L’ouverture d’un fichier avec open(filename, mode) utilise le mode w pour écrire en écrasant le contenu, r pour lire, r+ pour lire et écrire et a pour écrire à la suite.
Le bloc with open(...) as f ferme automatiquement le fichier, y compris lorsqu’une erreur de lecture ou d’écriture survient.
Le format big endian place l’octet de poids fort en premier, tandis que le format little endian place l’octet de poids faible en premier.
Pour décoder un tampon binaire, on importe struct, on définit une chaîne de format, on lit les octets, puis on applique struct.unpack(fmt, buffer), qui renvoie un tuple de valeurs.
📌 struct.pack(fmt, v1, v2, ...) encode des valeurs selon un format, struct.unpack(fmt, buffer) décode un tampon selon ce format, et struct.calcsize(fmt) calcule la taille représentée par le format.
Les caractères d’ordre des octets sont:
: big endian
Dans seek(offset, from_what), from_what vaut 0 pour le début du fichier, 1 pour la position courante et 2 pour la fin du fichier.
Les quatre niveaux principaux sont:
🔄 Un test fonctionnel unitaire suit cette démarche:
📌 Pour comparer deux nombres flottants, il ne faut pas tester leur égalité directe, mais vérifier que leur différence est inférieure à une précision fixée.
Texte lisible avec str ; binaire interprétable seulement avec son format
| Structure | Rôle | Condition de poursuite ou d’arrêt |
|---|---|---|
| if / elif / else | Choisir un bloc | Résultat des conditions |
| for | Parcourir un itérable | Fin des valeurs à parcourir |
| while | Répéter selon une condition | Arrêt lorsque la condition devient fausse |
| break / continue | Modifier une boucle | Sortie immédiate ou passage à l’itération suivante |
| Situation | Effet sur l’objet | Conséquence |
|---|---|---|
| Objet mutable | Modification possible sur place | La fonction peut modifier l’objet appelant |
| Objet immutable | Modification sur place impossible | Il faut retourner une nouvelle valeur |
| Copie par référence | Même objet partagé | Les modifications sont visibles par les deux noms |
Teste tes connaissances sur Fonctions Python et introduction à NumPy avec 11 questions à choix multiples et corrections détaillées.
1. Quelle caractéristique distingue un langage interprété d’un langage compilé ?
2. Qu'est-ce qu'un environnement Python et quelles sont ses principales bibliothèques scientifiques mentionnées dans le cours?
Mémorisez les concepts clés de Fonctions Python et introduction à NumPy avec 11 flashcards interactives.
Qu'impose un langage interprété pour exécuter les commandes ?
Un interpréteur exécute les commandes sans produire un fichier exécutable.
Langage interprété
Exécute commandes sans fichier compilé
Comment lancer l'interpréteur Python 3 sous Linux pour éviter Python 2 ?
En tapant python3 dans un terminal ou une invite de commande.
Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.
Générateur de fiches