Dans cet article, tu feras le tour de tout ce qu’il y a à connaître sur les vecteurs en Python en ECG. Il sera question de la création des vecteurs, de leur modification et également d’aspects plus pointus comme la création de vecteurs aléatoires. Bref, des notions Python qu’il convient absolument de maîtriser pour les écrits comme pour les oraux.
Introduction
Avant toute chose, nous parlerons ici de vecteurs, une notion qui se rapproche des listes. À chaque fois que tu veux utiliser des listes en ECG, il sera nécessaire d’importer la librairie qui contient les instructions sur les listes.
Ta première ligne de script sera donc import numpy as np et toutes les instructions que tu utiliseras dans cette liste seront précédées de « np. » .
Définition
Une liste est une structure de données qui contient une collection d’objets Python. Une liste est toujours encadrée par des crochets et les données présentes sont séparées par des virgules. Ainsi, une liste ne contient pas nécessairement des nombres.
Par exemple, [gâteau, caillou, girafe] est considéré comme une liste par Python, tout comme [5,4,9,8]. Dans un usage mathématique pur, nous nous concentrerons sur les listes de nombres.
Attention à un détail dans les listes en Python : dans un vecteur contenant n valeurs, celles-ci sont numérotées de la 0-ième à la (n − 1)-ième.
Création d’un vecteur
Création directe de la liste
Il est tout d’abord possible de créer soi-même un vecteur en renseignant directement toutes les données qui le composent avec l’instruction : np.array([liste des valeurs séparées par des virgules]).
Par exemple, le code suivant permet de retourner le vecteur A créé juste avant :
Liste de même valeur
Il est également possible de créer une liste de la taille souhaitée et qui contient la répétition d’un même nombre. Pour cela, on utilise l’instruction : np.[le nombre que l’on souhaite]([la taille du vecteur]).
À titre d’exemple, on utilise généralement np.zeros(n) ou np.ones(n). Exemple :
Si on exécute liste(4), ce dernier renverra [0,0,0,0] , [1,1,1,1].
Liste de valeurs réparties uniformément
Il existe pour cela deux instructions possibles et il est bon de connaître les deux. On dispose de np.arange(a,b,p) et de np.linspace(a,b,n).
np.linspace(a,b,n) crée un vecteur contenant n valeurs uniformément réparties de a inclus à b inclus.
np.arange(a,b,p) crée un vecteur démarrant à a inclus jusqu’à b exclu en incrémentant les valeurs successives par pas égaux à p. Par défaut, le pas p vaut 1 et a vaut 0 s’ils ne sont pas mentionnés.
Ainsi, posons par exemple le programme suivant :
Si on exécute liste(0,1,11,0.1), alors le programme renverra :
[0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ] [0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9] presque le même résultat, mais n’oublie pas que la valeur d’arrivée dans l’instruction np.arange est exclue, le 1 n’est donc pas atteint ici !
Modification d’un vecteur
Extraction
Il est possible d’extraire une partie d’un vecteur donné en Python. Si l’on veut extraire un seul élément du vecteur (noté V), on utilise alors la commande V[k] qui permet d’extraire le k-ième élément du vecteur. Attention, un vecteur de taille n est numéroté de 0 à n-1 !
Si l’on veut extraire une partie d’un vecteur, alors la commande sera V[a:b] qui renvoie un vecteur égal à l’ensemble des valeurs entre a et b inclus du vecteur V. Par exemple, si l’on a V = [4,5,6,7,8,9], alors la commande V[2] renverra 6 (le troisième élément du vecteur) et la commande V[1,3] renverra le vecteur [5,6,7].
Ajout
Il est tout d’abord possible de concaténer plusieurs vecteurs entre eux (c’est-à-dire de « coller » les vecteurs en un seul). Pour cela, on utilise la commande V=np.concatenate([V1,V2,V3]) si V1, V2 et V3 sont les vecteurs à concaténer.
Par exemple, ce programme renvoie le vecteur [1,1,1,1,0,0].
Mais on peut ajouter un élément à un vecteur, soit en début ou fin de liste, avec les instructions suivantes :
np.append(vecteur, nouvel élément) : le nouvel élément est alors ajouté à la fin du vecteur.
np.append( nouvel élément, vecteur) : le nouvel élément est alors ajouté au début du vecteur.
Par exemple, ce programme renvoie le vecteur [1,1,1,1,555].
Modification
On peut également modifier un élément ou toute une partie de notre vecteur. Pour un seul élément, la commande V[k] = a attribue « a » comme k-ième élément de V.
Pour modifier toute une partie de V, on utilisera plus volontiers la commande V[a:b] = [autre vecteur de la même taille].
À titre d’illustration, ce programme renvoie le vecteur [1,0,0,0].
Taille
Il est parfois nécessaire d’attribuer à une variable la taille d’un vecteur. Pour cela, il existe la commande np.size(V).
Par exemple, avec ce programme, taille([0,14,8,899]) renverra 3 (attention encore une fois au décalage de rang avec les listes Python).
Instructions utiles en statistiques
Il existe des instructions dans la librairie numpy qui permettent d’étudier notamment l’espérance, la variance ou encore l’écart-type de la série statistique matérialisée par un vecteur.
Voici une liste de ces instructions :
- np.mean(V) : renvoie la moyenne des valeurs de V.
- np.sum(V) : renvoie la somme de tous les éléments de V.
- np.min(V) / np.max(V) : renvoie le minimum/maximum des valeurs de V.
- np.std(V) : renvoie l’écart-type de la série statistique représentée par V.
- np.var(V) : renvoie la variance de la série statistique représentée par V.
Exercices d’application (+ corrigés)
Voici deux exercices d’application qui te permettront de t’entraîner sur les notions que tu viens de voir.
Exercice 1 : Créer une fonction qui prend en entrée un vecteur (noté V) de taille n et un réel k et qui, si la valeur k est présente dans le vecteur, remplace k par k-1 et finit par retourner V.
Exercice 2 : On considère la suite \((I_n)_{n \in \mathbb{N}}\) définie par : \(I_o = \frac{\pi}{2} , I_1 = 1\) et \(\forall n \in \mathbb{N} , I_{n+2} = \frac{n+1}{n+2}I_n\). Créer un programme afin que la fonction I renvoie un vecteur contenant les \(n\) premiers termes de la suite \((I_n)\).
Corrections
1.
2.
Bonus : vecteurs aléatoires
Pour cela, je te conseille d’être à l’aise avec la programmation des simulations de variables aléatoires en Python. Si tu es prêt(e), alors tu n’as plus qu’à lire ce qui suit.
Pour simuler l’aléatoire en Python, il est également parfois nécessaire de recourir à des vecteurs aléatoires, c’est-à-dire la simulation aléatoire d’une même loi usuelle un grand nombre de fois dans un seul et même vecteur.
Pour la plupart des lois usuelles, il suffit de rajouter une virgule dans l’instruction de la loi en rajoutant le nombre de répétitions voulu. Note que les vecteurs contiendront des réalisations indépendantes de la loi en question.
Voici les possibilités réunies dans la même page de code. On a la loi binomiale (ligne 1), la loi géométrique (ligne 3), la loi de Poisson (ligne 5), la loi uniforme à densité (ligne 7), la loi exponentielle (ligne 9), la loi Gamma (ligne 11), la loi normale (ligne 13) et la loi uniforme discrète (ligne 15). On note \(m\) la taille du vecteur :
Conclusion
En définitive, la libraire numpy offre un grand nombre de commandes disponibles pour manipuler les listes en Python. Il convient donc d’être parfaitement clair avec ces notions pour être prêt le jour J. Maintenant, il n’y a plus qu’à espérer pour toi que cette notion tombe au concours.
Tu peux retrouver ici le méga-répertoire qui contient toutes les annales de concours et les corrigés. Tu peux également accéder ici à toutes nos autres ressources mathématiques !