Menu de navigation ouvert
Fermer les suggestions
Recherche
Recherche
fr
Change Language
Changer de langue
Importer
Se connecter
Se connecter
Téléchargez gratuitement pendant jours
0 évaluation
0% ont trouvé ce document utile (0 vote)
261 vues
160 pages
Cours Conquerir Python
Transféré par
motivation31102001
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu,
signalez une atteinte au droit d’auteur ici
.
Formats disponibles
Téléchargez aux formats PDF ou lisez en ligne sur Scribd
Télécharger
Enregistrer
Enregistrer Cours Conquerir Python pour plus tard
Partager
0%
0% ont trouvé ce document utile, undefined
0%
, undefined
Imprimer
Intégrer
Signaler
0 évaluation
0% ont trouvé ce document utile (0 vote)
261 vues
160 pages
Cours Conquerir Python
Transféré par
motivation31102001
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu,
signalez une atteinte au droit d’auteur ici
.
Formats disponibles
Téléchargez aux formats PDF ou lisez en ligne sur Scribd
Élément précédent du carrousel
Élément suivant du carrousel
Télécharger
Enregistrer
Enregistrer Cours Conquerir Python pour plus tard
Partager
0%
0% ont trouvé ce document utile, undefined
0%
, undefined
Imprimer
Intégrer
Signaler
Télécharger
Enregistrer Cours Conquerir Python pour plus tard
Vous êtes sur la page 1
/ 160
Recherche
Plein écran
a Pragmathiques Mad
[email protected]
Cours « conquérir Python » La référence ultime pour les étudiants de prépa HECPrograthaues Sommaire I] VARIABLES ET INSTRUCTIONS DE BASE 5 A] Variables int float et bool... 5 41) Comment utiliser une variable dans Python... 5 nese 8 3) Les variables de type int et float 8 4) Les variables booléennes ... 2 B] Instructions et fonctions. 14 2) Les instructions d’affichage print et input 14 2) Les fonctions classiques et la Bibliotheque math “17 3) Créer sa propre fonction avec def .. Les listes ve 24 1) Création de listes en extension. 2) Rajouter et supprimer des éléments ou des listes... Py 3) Vénumérateur range. 27 4) Création d’une liste en compréhension. 30 5) Autour de t'indexation d'une liste : modification, insertion et suppression... 32 6) Copier une liste 37 7) Rechercher dans une list... sont 8) Opérations sur une liste... 9) Trier une liste 40 10) Permutation a soni a2 D) Les boucles if, for et while : ntroduction.. 43 1) Les boucles if. 43 2) initiation aux boucles for 3) Initiation aux boucles while 2023-2024 Copyright © Pragmathiques 2023Progmetniques Il] MATRICES : PREMIERES NOTIONS. 0) Importation de la biblioth@que Numpy 1) Conception de matrices comre 2) Extraction et modifications d' éléments d'une matrice. 3) Créations spécifiques de vecteurs lignes 4) Calcul entre les matrices 5) Inverse et transposée d'une matrice 6) Matrices et fonctions 1* partie. 7) Comparaisons des coefficients d’une matrice IIT] DEF, IF ELSE ET RESOLUTIONS D’EQUATIONS... 1) Utilser def avec plusieurs variables de sortie, 4) Résolutions de systémes.. IV] GRAPHES EN 2D 0) Importer la biblioth&que matplotiib. pyplot... Al Tracer une courbe. 1) Ligne brisée avec plt.plot 2) « Courbe lisse » avec plt.plot... 3) Les options de tracé.... 4) Représenter une suite... 5) Modifier le repére 8B] Tracer plusieurs courbes. \V] BOUCLES WHILE & FOR ET SUITES... 1) Suites arithmético-géométrique. 2) Suites croisées, ee VI] SOMMES ET PRODUITS... AJ Calculs de sommes 1) Différentes méthodes pour calculer une somme 49 A 62 65 70 oT 82 1 86 86 a9. 92 oe 92. 93 93 95 96 101 103, 106 108 120 122 122 eada2 2023-2024 Copyright © Pragmathiques 2023,FProgmatiques 2) Calcul de fa somme de termes impair 8] Calcul de produits 1) Calcul de produits sur le modéle précédent avec les sommes 2) Les fonctions pour calculer ni Vil] SIMULATIONS ET PROBABILITES 1** partie... 0] importer la bibliothéque numpy.random.. A] Le principe de la simulation d'une variable aléatoire..... B] La commande rd.random 1) rd.random() 2) rd.randomin) x. 3) rd.randomi(n,m)) 4) Simulation d’un lancer de dé. 5) Simulation d’une loi uniforme sur a, b avec np.rand . 6) Loi uniforme et histogramme C] Les simulations des lois discrétes avec rd... 1) Loi binomiale et de Bernoulli 2) Loi uniforme discréte.. 3) Loi géométrique. 4) Loi de Poisson D] Les simulations des los de v 1) Loi uniforme & densité 2) Loi exponentielle. 3) Loi normale 4) Lien entre histogramme et densité de probabilité..... 5) Loi gamma (maths approfondies) 125 128 128 BL 133 133 134 135 135 13s 136 136 137 138 140 ve 140 147 151 153 155 155 155 1 156 158 160 2023-2024 Coprright © Pragmathiques 20232023-2024 Proomathiqu T] VARIABLES ET INSTRUCTIONS DE BASE A] Variables int float et bool Dans ce A], toutes les instructions sont tapées dans Shell, 1) Comment utiliser une variable dans Python Comprendre l'affectation avec le signe = Le signe = signifie en langage Python « j'affecte la valeur située & droite du signe = a la variable située 8 gauche de la variable ». (Nous verrons plus tard que « égal 8 » s‘écrit == en Python}. La variable n’est pas forcément une lettre unique. Une variable est formée par * Une suite de lettres © Eventuellement _ © Eventuellement un ou des chiffres Dans Python 7,5 s'écrit 7.5, Affichage du contenu d’une variable dans Shell Ici, le nom de la variable est C et 5 est la valeur contenue dans la variable. Si je pose la variable sans rien mettre d’autre dans Shell, Python me donne la valeur contenue dans la variable. En revanche, dans l'exécution dans le module, il ne sera pas affiché, Crest pourquoi souvent dans les exercices, on utilisera instruction print (que l'on verra dans lea). Sila variable ne contient rien, un message d’erreur s'affiche. Voici ce que ¢a donne dans Shell (donc sans avoir besoin d’utiliser print) Copyright © Pragmathiques 2023,Progmatriques Traceback (most recent call last): File "
", line 1, in
D NameError: name 'D is not defined Affichage du contenu d’une variable avec print instruction print permet d’afficher le contenu d'une variable. >>> print (Variable_1) On verra d'autres fagons dutiiser print par la suite. Python tient compte de la casse (majuscule/minuscule) >>> VARIABLE_1=9 > print (Variable_1) 2023-2024 Copyright © Pragmathiques 2023,Promathiqu Noms de variables interdits Un nom de variable ne peut pas © Etre réduit 3 un chiffre ou des nombres © Commencer par un chiffre © Etre une suite de caractére entre guillemets ou’ SyntaxError: jot assign to literal here. Maybe you meant instead of IR: SyntaxError: invalid decimal literal "salut '=12 SyntaxError: cannot assign to literal here. Maybe you meant te=' instead of Supprimer ce qui est contenu dans une variable La fonction del permet de supprimer la valeur contenue dans une variable. >>> Ae8 >>> print (A) 8 >>> del A >>> print (a) ‘Tracebac (most recent call last): File "
print (A) NameError: name is not defined 2023-2024 Copyright © Peagmathiques 20232023-2024 2)Le#etle; Le point-virgule Le point-virgule dans Python permet de mettre plusieurs commandes différentes sur une méme ligne. Ce n'est pas trés visuel pour tes programmes, mais cela permet d’économiser du papier pour le concepteur de sujet. Done tu peux le rencontrer dans un programme, 34:prin| ) sprint (E) # permet de commenter une commande Le# permet ’écrire du texte qui n’est pas pris en compte par Python. Crest trés utile pour expliquer le code & quelqu’un quite lit, Dans ton cas, c’est utile pour expliquer au correcteur ce que tu fais. Et c'est utilisé par les concepteurs du sujet pour te donner des indications sur le programme. >>> Ae4+81 #0n applique la somme de 4+81 a la variable A >>> print (A) 85 3) Les variables de type int et float Les types int et float Les variables de type int sont des nombres entiers. Les variables de type float sont des nombres réels a virgule (on dit que c'est un type flottant). Sion met une « virgule » (donc un point) & un entier, Python considére qu'il s‘agit d'une variable de type float. Pour savoir le type d'une variable, on utilise la fonction type. Copyright © Pragmathiques 20234 2023-2024 >>> >>> type (A) stype (B) stype (C) vint'>
Calculs sur les variables de type int et float. La multiplication se fait avec * La division se fait avec / et le résultat obtenu est toujours de type float (méme s'il est un entier). 48 stécrit a3 >>> print (7+2) >>> print (4-2) 2 >>> print (5*4) 20 >>> Ae12/6 >>> Be15/2 >>> print (A) 2.0 >>> print (B) 15 >>> type (A)
>>> print (4**3) 64 Copyright © Pragmathiques 2023,Frogmatiques Quand la variable contient une valeur est qu'elle est utilisée dans un calcul, on considére alors pour le calcul, la valeur contenue dans la variable. Le résultat du calcul peut étre inséré dans une nouvelle variable ou dans la méme variable. La valeur précédente est alors remplacée par la nouvelle valeur. CHA print (Cc) 2.0 >> Daa >>> print (D) D=p+10 >>> print (D) Les divisions euclidiennes // calcule le quotient de la division euclidienne, % calcule le reste de la division euclidienne. >>> print (9/2) 4.5 Chaines de caractéres (type str) Pour créer une chaine de caractéres, on peut la mettre entre guillemets ou entre apostrophes. Sion veut que la chaine de caractéres contienne une apostrophe, on V'entoure de guillemets. 2023-2024 Copyright © Pragmathiques 2023 10>>> Ae"Pragmathiques" >>> Be! Prépa’ >>> E="* Pragmathiques'” >>> type (A) ;type(B)
>>> print (A) Pragmathiques >>> print (E) *Pragmathiques' >>> De"1'informatique est importante aux concours" >>> print (D) Ltinformatique est importante aux concours (On peut concaténer des chaines de caractéres, y compris des variables, avec le signe + (attention de laisser des espaces & lintérieur des apostrophes). >>> C="Python par ‘4At" "4B, >>> print (C) Python par Pragmathiques Prépa Une chaine de caractéres peut ne contenir que des nombres. >>> Ast 1! >>> Bet! >>> print (AtB) On a concaténé 1 et 1 pour former 11 (JCDV est content !) >>> print (A*4) uuu 2023-2024 Copyright © Pragmathiques 2023, nFrogmathiques Ici le “4 indique que t'on va faire répéter a chaine de caractére quatre fois. >>> CeMBonjour"™ >>> print (C#3) BonjourBonjourBonjour 4) Les variables booléennes >>> AeSB >>> print ( False >>> print ( ‘As=2 signifie « A est-il 6gal 82?» 55 étant la valeur contenue dans A, la réponse est non. On renvoie alors Ia valeur False Pour le deuxiéme la réponse est true, On peut faire ces tests avec plusieurs opérations. # est noté I= en Python. >>> print (A==B) >>> print True >>> print (Ac=C) >>> print (A>=C) True >>> print (A>C) False >>> print (A!=C) False Copyright © Pragmathiques 2023, 2023-2024 22023-2024 Un test avec and donne true si les deux résultats sont justes. Un test avec Or donne true si au moins I'un des résultats est juste. >>> print (Ae=B and A: False >>> print (Ae=B or A==C) Quand une variable contient la valeur true, elle est considérée dans un calcul comme contenant la valeur 1. Quand une variable contient la variable false, elle est considérée dans un calcul comme contenant la valeur 0 Le type de ces variables est noté bool comme booléen. >>> E=(Ae=C) >>> F=(ADC} >>> print (E) >>> print (F) False >>> print (+2) print (F+2) >>> type (E}
Copyright © Pragmathiques 2023 a2023-2024 Progmatniques B] Instructions et fonctions 1) Les instructions d’affichage print et input Uinstruction print instruction print permet d’afficher ce qui est entre parenthése, Lorsque l'exoression est entre guillemets (ou entre apostrophel, elle affiche exactement ce. qui est écrit. Sinon elle affiche les valeurs qui sont dans la variable. >>> print (A) >>> print ("A") >>> print ("A") (On peut associer des valeurs mises entre guillemets ou entre apostrophes et d'autres dont on ‘met la valeur. On les sépare par une virgule ou avec +. >>> print ("Bonjour, je veux ", A, ‘tablettes de chocolat noir!) Bonjour, je veux 4 tablettes de chocolat noir Attention, le + ne marche que si toutes les valeurs sont en format str. >>> print ("Bonjour, je veux "tA+'tablettes de chocolat noir") Traceback (most recent call last): File "
", line 1, in
print ("Bonjour, je veux "+A+'tablettes de chocolat Typeerri n only concatenate str (not ) to str >>> print ("Bonjour, je veux 4"+' tablettes de chocolat noir') Bonjour, je veux 4 tablettes de chocolat noir Copyright © Pragmathiques 2023, 14Z 2023-2024 Froomathiques instruction input instruction input réécrit sur la console la phrase mise entre guillemets. Ce qui a été tapé a la suite de cette phrase par l'utilisateur est alors affecté dans la variable précédant le signe Par défaut Python considére que ce qui est tapé par l'utilisateur est une chaine de caractéres (done de type str). Pour que Python « convertisse » la variable en entier on lui applique Vinstruetion int(). Pour que Python la « convertisse » en flottant, on lui applique instruction float(). En revanche, si la valeur rentrée ne correspond pas au type demandé, un message d’erreur apparait. >>> nsinput ("Entrez un entier naturel : ') tvez un entier naturel : 4 >>> print (n) \ 4 offiché Tapé por l'utilisateur >>> type(n)
>>> print (n*2) 44 On retrouve ce qu'on avait vu précédemment, le * nous fait répéter la chaine de caracteres (car ici 4 et de classe ‘str’. >>> print (n+2) Traceback (most recent call las File "
", line 1, in
print (n+2) ‘TypeError: can only concatenate str (not “int") to str Ilya un message d’erreur car on ne peut pas addionner un entier et une chaine de caractéres. >>> meint (input ("Entrez un entier naturel : ')) Entrez un entier naturel : 4 >>> print (m) Copyright © Pragmathiques 2023 152023-2024 >>> print (m*4) 16 Sila variable ne correspond pas & ce qui était demandé, ¢a bug >>> isint (input ("Entrez un entier naturel : ')) Entrez un entier naturel : 4.2 Traceback (most recent call last): File “
", line 1, in
isint (input ("Entrez un entier naturel : ')) ValueError: invalid literal for int() with base 10: '4.2° >>> j=float (input ("Entrez un entier naturel : ')} Entrez un entier naturel : 4 >>> print (3) 4.0 >>> type(s)
(On remarque que quand on additionne un entier et un float, Python convertit 'entier en float pour pouvoir faire Yopération. >>> print (m+) 8.0 >>> Prénor put ("Quel est ton prénom ? ") Quel est ton prénom ? Greg >>> print ("Bonjour ",Prénom,". Comment vas-tu 2") Bonjour Greg . Comment vas-tu ? >>> print ("Bonjour "+Prénom+". Comment vas-tu 2") Bonjour Greg. Comment vas-tu ? Copyright © Pragmathiques 2023 16Programe 2) Les fonctions classiques et la bibliotheque math Les fonctions classiques |x| seri: >>> print (abs (~4)) 25 s'écrit : >>> print (25**0.5) 5.0 Notons que pour calculer la racine, il existe une autre fagon avec la bibliothéque math. La fonction round La fonction round donne l'arrondi. Attention cependant les régles sont assez spéciales. Sion met round() avec juste le nombre, il donne l'arrondi a 'entier prés. Le cas du 5 est assez particulier. Sie nombre est & mi-chemin entre deux entiers, il donne Ventier pair le plus proche. >>> print (round (2.4)) print (round(2.5)) 51)) >>> print (round(3.5)) Pour contourner ce probléme, on peut créer notre propre fonction avec une bouce if (voir par ailleurs) 2023-2024 Copyright © Pragmathiques 2023,Progmathiques La fonction round(x,y) renvoie un arrondi de x a y décimales prés. >>> print (round 1.414 *40.5,3)) On retrouve la méme particularité avec 'arrondi au pair le plus proche quand on utilise le round(x,y) >>> print (round (5.185, 2)) 5.18 >>> print (round (5.195, 2)) 18 est pair donc 'arrondi est 5,18 19 est impair donc on arrondit au pair le plus proche, done 20 Les opérateurs issus de la bibliothéque math Beaucoup de fonctions et méme 7 ne sont pas reconnues par Python Elles sont contenues dans le module math qu'il faut importer avant de I'utliser. Pour cela, on écrit import math, V2 est appelé avec m: yet (2) In(1) est appelé avec math. 10g e? est appelé avecnath.exp (2) rest appelé avecniath.pi math. floor donne la partie entire maths . ceil donne Fentier au-dessus. import math rt (2)) 4142139623730951 >>> print (math. 1og(1)) 0.0 >>> print (math.exp(2)) 389 6098930 2023-2024 Copyright © Pragmathiques 2023,>>> print (math. sqrt (25) ) ath. pi/2 >>> print (A) 1.5707963267948966 >>> print (math. floor (3.7)} 3 >>> print (math. floor (-5.2)) 6 >>> print (math.ceil(5.1)) 6 La bibliothéque math avec import math as m On peut importer la bibliothéque math avec un raccourci pour que les fonctions appelées soient précédées dem. plutdt que dematn. import math as m >>> print (m.sart (2) 1.4142135623730951 >>> print (m.1log(1)) 0.0 >>> print (m.exp(2)) 7, 3890560993065 >>> print (m.pi) 3.141592653589793 >>> print (m.£loor(5.2)) >>> print (m.ceil (5.1) 6 2023-2024 Copyright © Pragmathiques 2023 192023-2024 Progmathique La biblioth@que math avec from math import* Quand on utilise from math import®, tous les éléments du module math sont importés. lIn’y a done pas besoin de faire précéder les fonctions de math. ou de m. from math import >>> print (sqrt (2) 1,4142135623730951 int (1og(1) >>> print (exp (2)) 7,38905609893065 >>> print (pi) 3.141592653589793 floor (3.7)) Cette importation peut poser un probléme car elle peut rendre moins lisible le code. En effet, des fonctions existent dans plusieurs bibliotheques (cos par exemple existe dans math et dans lumpy). La fonction “cos()" de "mat calcule le cosinus d'un angle en radians, tandis que la fonction "cos)" de “numpy" calcul le cosinus d'un tableau dangles en radians. Sion utilise les deux bibliothéques dans un programme et qu’on n'utilse pas les prédécesseurs math. m. etc. avant pour 'une des fonctions "cos(), ily aura un conflt de nom lorsqu’on appellera la fonction “cos()", car Python ne saura pas laquelle des deux fonctions utiliser. Trigonométrie La fonction round est utile quand on utilise a trigonométri. En effet, parfois les valeurs ne sont pas « exactes » car le 1 utilisé avec math.pi est une valeur approchée. On procéde comme cela, Copyright © Pragmathiques 2023 20ames import math >>> Aemath.pi/2 >>> print (A) 1.5707963267948966 >>> print (math. sin(A)) 1.0 >>> print (math.cos (A) ) 6.123233995736766e-17 >>> print (math.cos (math. pi/2)) 6. 1232339957367 660-17 >>> print (math. tan(math.pi/4)) 0.9999999999999999 >>> print (round (math. cos (math.pi/2),2)) 0.0 >>> print (round (math. tan (math. pi/4),2)) 1.0 import math as m >>> print (m.sin(m.pi)) 1, 2246467991473532e-16 >>> print (m.cos(m.pi)) -1.0 >>> print (m.tan(m.pi/4)) 9..9999999999999999 >>> print (round (m.sin(m.pil)) ° >>> print (round(m.tan (m.pi/4))) 1 2023-2024 Copyright © Pragmathiques 2023, a2023-2024 3) Créer sa propre fonction avec def Exemple avec def f(x) Pour éviter de répéter plusieurs lignes de codes, on peut créer une fonction qui renvoie chaque fois les résultats. Si par exemple on veut les images de ~4, 2 et 5 dela fonction f : x + 7x7 +1 >>> def F(x return 7*x**3+1 Instruction en retrait (on dit, qu'elle est indentée} On peut mettre plusieurs lignes avant de mettre return, >>> def paf(x): oe xt 83 urn AtL >>> Aspat(-4 >> print (A) 447 Copyright © Pragmathiques 2023 2A 2023-2024 Progmothiques Instructions indentées Le retrait des lignes qui suivent la ligne def permet de définir quand la fonction def s’arréte. Tant quill y ale retrait, on est encore dans la fonction def. Beaucoup de langages de programmation utilisent des caractéres de ponctuation, tels que les accolades ({}) ou les mots-clés (begin/end, do/end) pour ouvrir et fermer les boucles, instructions ete. Python utilise les mises en retrait des instructions jusqu’a la fin de I'instruction. On dit qu’elles sont indentées. Crest un des facteurs qui a rendu populaire ce langage de programmation, car il rend le code plus épuré et lisible. En revanche, il nécessite de faire trés attention a bien indenter les instructions. (Ceest ce qu’on verra quand on utlisera les boucles if, for et while. On peut également mettre plusieurs variables d’entrées ‘On peut mettre autant de variables d’entrées que I'on veut dans une fonction def. > def fpv(x,y,z 08 return 3*x+100*y+10000+2 > fpv(4,5,9) (On verra aprés le chapitre sur les vecteurs et les matrices que ’on peut également mettre plusieurs variables de sorties. Copyright © Pragmathiques 2023, 2FProgmathiquer C] Les listes 1) Création de listes en extension Pour créer une liste en extension, on saisit les éléments entre crochets, séparés par des virgules. ["vamos", ‘Rafa']; print (B) Vamos', "Rafat Les éléments ne sont pas nécessairement du méme type. print ({12, 23.4,"Salut"]) 1 23.4, Salut") Une liste peut étre vide. ]sprint (D 2) Rajouter et supp! La méthode append La méthode append ajoute un élément en derniére position d'une liste existante. Attention : on ne erée pas une nouvelle liste, mats on modifie Ia liste existante. ~4,25) nd (12) >> print (A) (1, -4, 25, 12) >>> R.appe! >>> A. append ( "bon jou: 2023-2024 Copmtight © Pragmathiques 2023 2>>> print (A) (1, -4, 25, 12, *bonjour'] (On peut partir d'une liste vide et créer une liste au fur et & mesure grace a la méthode append. Ce sera trés utile dans les boucles for et while que nous verrons plus tard. >>> 1 >>> B.append(1) >>> Beappend (2) >>> B.append(3) >>> B.append ("soleil") >>> print (B) [1, 2, 3, ‘solei1"] Rajouter une liste avec la méthode extend La méthode extend ajoute tous les éléments d'une liste a la fin d'une liste préexistante, ‘Comme pour la méthode append, on ne crée pas une nouvelle liste, mais on modiffe la liste existante, 2, 3, *soleil'] B-extend([14,5,6]) >>> print (B) (1, 2, 3, "soleil", 14, 5, 6) 2023, 2024) [1, 2, 3, ‘soleil’, 14, 5, 6, 8, 2023, 2024) On peut rajouter une liste 8 une liste vide. C.extend(A) [2023, 2024] Copyeight © Pragmathiques 2023 2023-2024 252023-2024 La concatenation de liste avec + ‘Avec le +, on peut concaténer deux listes. On peut mettre cette concaténation dans une autre liste. 6 3] (On peut également concaténer une liste préexistante, comme on I'a fait avec extend, mais. cette fois en utilisant le + >>> ASAE >> print (A) [1, 2) 3, 4 5, 6] Cependant pour rajouter & une liste préexistante, on a tendance a utiliser extend car ¢a apporte davantage de clarté au code. Et pour les trés grandes listes, l'utilisation de extend serait plus rapide que + Mais dans un sujet de concours, tout cela peut étre différent. Done il faut connaitre les deux. méthodes. Répétition avec * Quand on écrit A*3, on obtient une nouvelle liste qui est la concaténation de 3 liste A (done de la liste A répétée 3 fois), (On peut la créer dans une nouvelle liste ou dans une liste préexistante >>> AS[1,2,3] 16) >>> BELA, Copyright © Pragmathiques 2023, 26d 2023-2024 canv3 >>> print (C) 2,3, >>> BeB*2 >>> print (B) I, 5, 6 1 6] Supprimer avec del Pour supprimer un élément d'une liste d’index indéterminé en Python, on utilise la commande del suivi dela liste et entre crochet index de I’élément que 'on veut supprimer, >>> As[1,14,15,17,-1,7] >>> del ALO] >>> print (A) (14, 15, 17, >>> del AIS >>> print (A) (14, 15, 17, 71 3) L’énumérateur range Uénumérateur range (d,0,p) et list Les lettres : d comme départ, o comme obstacle ou ouvert et p comme pas. Uénumérateur range(d,o,p) donne une succession d’entiers. La procédure est la suivante, Le premier nombre est entier de départ. Le deuxiéme nombre est « entier obstacle » ou « entier ouvert ». Leentier limite qu'on ‘atteint pas et qu’on ne franchit pas. On s‘arréte done a celui d’avant. C’est comme un Intervalle ouvert : [d, of = [,0~ 1] Le troisieme nombre est le pas. Il indique de combien on avance. Ce pas peut étre négatif Copyright © Pragmathiques 2023, 7Propmathiques Pour afficher cette succession on fait précéder le range (ou la variable ol la succession est contenue) par lst. >>> print (List (range(1,19,2))) (1, 3, 5, 7, 9 11, 13, 15, 17) >>> print (List (range (1,20,2))) (1, 3, 5, 7, 9 22, 13, 15, 17, 19] ange >>> print (A) 0,-15,-3) range(10, -15, -3) >>> print (List (A)) (10, 7, 4, 1, 2, -8, -11, -14) Sion veut rajouter des éléments & Ia liste, il faut le faire @ partir de la liste créée par list(range(d,o,p)) et non par range(d,o,p}. >>> C=A.extend([ "Bonjour", "ca va" Traceback (most recent call last): File "
", line 1, in
C=A.extend({ "Bonjour", "ca va")) AttributeError: ‘range’ object has no attribute ‘extend! >>> Delist (A) >>> D.extend(["Bonjour", "ca va"}} >>> print (D) (10, 7, 4 41, -11, -14, "Bonjour', ‘ea va") >>> Eelist (A) >>> print (E) (10, 7, 4, 1, -2, >>> E.append(189) -u1, -14) >>> print (B) 0, 7, 4, 1, , 189) Attention : si un des nombres d, 0 ou p n'est pas un entier, le range ne peut pas étre créé. Copyright © Pragmathiques 2023 2023-2024 28rogmatiques >>> List (range(1.5,19,2)) Traceback (most recent call last): File "
", line 1, in
List (range (1.5,19,2)) TypeError: 'float' object cannot be interpreted as an integer >>> List (range(1,19.5,2)) Traceback (most recent call last): File "
", line 1, in
List (range (1,19.5,2)) ‘TypeError: ‘float’ object cannot be interpreted as an integer >>> List (range(1,19,2.5)) Traceback (most recent call last): File "
", Line 1, in
List (range (1,19,2.5)) ‘TypeError: 'float' object cannot be interpreted as an integer Si on ne peut pas constituer Ia liste car le pas n’est pas du bon signe, dans ce cas \énumération est une énumération vide. La liste constituée est alors une liste vide que l'on peut incrémenter. nt (List (range (1,19,~2))) >>> ange (19, 1,2) >>> print (B) range(19, 1, 2) >>> print (List (B)) 1 >>> Beextend([1,4,7]) Traceback (most recent call last File "
", line 1, in
B.extend([1,4,7]] AttributeBrror: ‘range’ object has no attribute ‘extend! >>> Celist (B) >>> Crextend([1,4,71) >>> print (C) I, 4, 77 2023-2024 Copyright © Pragmathiques 2023 29L’énumérateur range (4,0) Quand on écrit range (d,0), Python considere que le pas par défaut est de 1 On a alors d qui est entier de départ et o qui est 'entier obstacle (on s‘arréte donc & 0-1), >>> print (list (range(4,16))) [4, 5, 6 7, 8, % 10, 11, 12, int (list (range (14,4))) U’énumérateur range (0) Quand on écrit range(o}, Python considére que le pas par défaut est de 1 et que la valeur de départ est 0. >>> print (List (range (12))) [Ove at zoes kd cal Crea 0 oO aE EL) >>> print (List (range (-4))) u 4) Création d’une liste en compréhension Liste en compréhension sans filtrage On peut eréer une liste en compréhension & partir des éléments dune liste initiale. On utilise la syntaxe [valeur for élément in itérable] avec valeur qui est la valeur 8 ajouter & chaque fois & la liste, élément est élément & partir duquel est construite cette valeur, et ‘térable est objet itérable que l'on parcourt pour prendre les éléments. Dans beaucoup de cas itérable est une liste. Pour I'instant, on verra les cas oli itérable est une liste. 2023-2024 Copyrent © Pragmathiques 2023,Frogmatiqves (On peut par exemple définir une liste ot les éléments sont les carrés des nombres entiers de 1a10. Méthode 1,2, 3, 4,516, 7,8, 9,10) >>> Be[n**2 for n in A] >>> print (B) 1, 4, 9 16, 36, 49, 64, 81, 100) Méthode 2 >>> print ((n*¥2 [1, 4, 9% 16, 25, 36, 49, 64, 81, 100) or n in range(1,11)]) Liste des 8 premiers multiples de 7 strictement positfs >>> print ({7"i for i in range (1,9)]) [7 14, 21, 28, 35, 42, 49, 56 Liste en compréhension avec filtrage (On peut également ajouter une condition pour choisir les éléments de Fitérable. On parle de filtrage. La syntaxe devient : [valeur for élément in itérable If condition) La condition définit quels éléments seront pris dans 'térable. Créons une liste des carrés d’entiers entre 1 et 50, mais avec les entiers entre 1 et 50 qui sont multiples de 7, >>> As[n*#2 for n in range(1,50) if nb > print (A) (49, 196, 441, 7 1225, 1764, 2401) 2023-2024 Copyright © Pragmathiques 2023 312023-2024 Progmathiques ni est la condition : le reste de la division euclidienne de n par 7 est 0 (et donc n est divisible par 7). Si true est renvoyé, alors le n est selectionné et il est mis au carré. Créons la liste des diviseurs de 1998. >>> Ae(n for n in range(1, 1999) if 1998%n=-0] >>> print (A) [1, 2, 3,6, % 18, 27, 3 + 54, 74, 111, 222, 333, 666, 999, 1998 Ces diviseurs sont forcément entre 1 et 1998 donc on écrit range(1,1999) pour avoir les, entiers entre 1 et 1998, If 1998%0 permet de sélectionner les entiers de cette liste qui divisent 1998, On écrit n for n car on n’a pas besoin de modifier le n initial 5) Autour de l’indexai in d’une liste : modification, insertion et suppression. Indexation d'une liste En Python, index du premier élément est 0, celui du deuxiéme est 1, celui du troisiéme est 2, ete. Pour accéder au 1" élément d'une liste A, on écrit AO], pour accéder au 2™, on écrit A( 11, pour accéder au i, on écrit A [i-1) (On peut aussi commencer par la fin. Ainsi, pour accéder au dernier élément, on écrit & pour accéder a l'avant-dernier, on écrit A[-21, ete. Regardons avec la liste des 11 premiers entiers positifs impairs. >>> Ae[2*ntl for n in ran >>> print (A) [lp 3: 5, 7 9, 12, >>> print (A[0]) 1 Copyright © Pragmathiques 2023, 32>>> print (A[1]) 3 >>> print (A[-1]) 2 >>> print (A[-21) 19 >>> print (A(10]) a1 >>> print (A(12]} Traceback (most recent call last): File "
IndexError: list index out of range >>> print (A[-11]} 1 >>> print (A[-12]) Traceback (most recent call last): File "cpyshell#4>", line 1, in
print (A[-12]) IndexError: list index out of range Modification d’une liste >>> AL2]= >>> print (A) [1, 3. 1, 7 9% 11, 13, 15, 17, 19, 221 [2] =1 signifie en francais :jaffecte la valeur 1 au (2 + 1)" coefficient de A. La liste change done avec le nombre 5 remplacé par 1 2023-2024 Copyright © Progmathiques 2023 332023-2024 Itérer les éléments d’une liste sans index Itérer les éléments d’une liste avec index La fonction native enumerate () parcourt une liste tout en affichant I'index de I’élément. parcouru. La premiére variable est la position et la seconde est I'élément de la liste (par défaut lindex démarre 8 0) >>> for k, i in enumerate(A}: print (k, i) Copyright © Pragmathiques 2023,2023-2024 Mais on peut aussi « réindexer » index en rajoutant 1 8 chaque valeur de k. >>> for k, i in enumerate(A): print (k+1,i) ‘On peut décider de commencer I'indexation a une autre valeur que 0. On fait pour cela suivre la liste itérée par start et la valeur par laquelle on veut commencer. >>> for k, i in enumerate (A, start~5}: oo print (ky i) 99 1011 1113 12.15 13.17 a4 19 35 21 Copyright © Pragmathiques 2023, 352023-2024 Progmatniqu Insérer une valeur avec la méthode insert Si je veux insérer la valeur 1 en 6éme position (c'est-a-dire & index 5), jutilise la méthode insert. Les autres éléments sont décalés. 1, 11, 13, 15, 17, 19, 22) Le premier nombre entre parenthéses est index et le second est la valeur qu'on rajoute. Supprimer une valeur a un index déterminé avec la méthode del. Pour supprimer Ia valeur en 4°" position (c‘est-a-dire a index 3), utilise la méthode del >>> del AI3] 1, 11, 13, 15, 17, 19, 21) ‘Supprimer une valeur donnée avec la méthode remove. (On peut choisir de supprimer une valeur en donnant cette valeur. La premiére occurrence de la valeur est supprimée de la liste. Mais les éventuelles autres restent. >>> A.insert (5 >>> print (A) 1, 3, 1, % 2, 3, 1 19) 221 >>> A. remove ( >>> print (A) (1, 1, % 1, 3, 11, 13, 15, 17, 19, 22) Icile premier 3 a été supprimé, mais le second reste. Copyright © Pragmathiques 2023, 36Progmathiques 6) Copier une liste existe plusieurs fagons de copier une liste. >>> print ia) a, % >>> Bea 11, 13, 15, 17, 19, 21] >>> A. insert (6,9) >>> print (A) (1, 1, 9 1, 3, 11, 9% 13, 18, 17, 19, 211 >>> print (B) I, a, % 4, ar 19, 21] On voit qu’avec cette opération, toute modification de A entraine la méme modification dans 8 (On a4 méthodes pour copier sans avoir ce probleme. >>> C=A.copy() >>> Delist (A) Alt] >>> Fe[n for n in Al >>> A.insert (7,1) >>> print (A) 1, 1, % I, 3, 11, 9% 1, 13, 15, 17, 19, 221 >>> print (C) (1, 1, % 1, 3, 11, 9, 13, 15, 17, 19, 211 >>> print (D) 9% 1, 3, 11, 9% 13, 15, 17, 19, 221 >>> print (E) 9% 1, 3, 11, 9% 13, 15, 17, 19% 21) >>> print (F) % 1, 11, 9, 13, 15, 17, 19, 21) (On voit qu‘ici, aucune des listes n'a été modifié par I'insertion du 1. 2023-2024 Copyright © Pragmathiques 2023, 7Frogmathiques 7) Rechercher dans une liste Test si un élément appartient a une liste avec la commande in Crest un test qui prend la valeur true ou la valeur false. >>> print (1 in A) (12 in ay ‘Compter les occurrences d’une valeur dans une liste On utilise .count{i) avec i étant la valeur dont on veut savoir combien de fois elle est présente dans la liste fara >>> print (A.count (1) } 1, 3, 1, % 1, 13, >> print (A. count (9) } 2 >>> print (A.count (4)} Lest présent 4 fois dans la liste A. 9 est présent 2 fois dans la liste A. 4 nest pas présent dans la liste A. Rechercher la premiére occurrence d’une liste La commande . index (i) renvole indexation du premier élément i dans la liste. >>> print (A. index (3 2023-2024 Copyright © Pragmathiques 20232023-2024 Progmathiques >>> print (A.index(1)) 0 Dans la liste A, le premier chiffre 3 est en 5*™ position, donc & indexation numéro 4, Dans la liste A, le premier chiffre 1 est en 1** position, donc a "indexation numéro 0. >>> print (A. index (14)) Traceback (most recent call last): File "
", line 1, in
print (A. index (14)) ValueError: 14 is not in li La valeur 14 n’étant pas présente dans la liste, un message d’erreur s‘affiche. 8) Opérations sur une liste Compter le nombre d’éléments avec len La commande len(A) renvoie la longueur de la liste A, donc son nombre d’ éléments. 1,1, % 4, 3, >>> len (A) 1, 13, 15, 17, 19, 21] Sommer les éléments d’une liste avec sum >>> sum(A) 121 Copright © Pragmathiques 2023 392023-2024 Proometniques Inverser une liste avec la méthode reverse() (On peut inverser une liste avec la méthode reverse() -reverse() ge eee [21, 19, 17, 1 >> A.reverse() Créer une nouvelle liste qui est inverse d'une liste existante (On utilise pour cela reversed(A) dans une liste créée en compréhension, reversed(A) étant Vitérable, >>> print (6) (21, 19, 17, 15, 13, 1, % 11, 3, 1, 9 1, 1 9) Trier une liste Comme pour reverse et reversed précédemment, on a la méthode A.sort() qui modifie la liste Aexistante, et sorted(a) qui « créée » une nouvelle liste trie. Trier dans l’ordre croissant avec sorted(A) [i for i in sorted(a)) print (I) 1, 1, 1, 1, 3, 9 9% 11, 13, A) Copyright © Pragmathiques 2023, 402023-2024 Frogmathiques Lest la liste avec les valeurs de A triées dans l'ordre croissant. On voit que la liste A n'est pas modifiée. Trier dans l’ordre croissant avec A.sort() Avant de trier A, je la copie dans une nouvelle liste. Py) >>> print (i) G, 1, 9% 1, 3, 11, 9 4, 13, 15, 17, 19, 21) >>> A.sort () >>> print (A) 1, ds 1, ly 3, 9% 9, 21, 13, 15, 17, 19, 22] Ici a liste A est modifiée. Trier dans ordre décroissant avec sorted(H, reverse=True) sorted(H, revers: >>> print (J) 21, 19, 17, 18, 13, 11, % 9% 3, 1, 1, dy Ud >>> print (H) fea aS eel 1, 9, 1, 13, 15, 17, 19, 21) La liste Jest la liste H triée dans l'ordre décroissant, mais Ia liste H n’est pas modifiée. Trier dans ordre décroissant avec H.sort(reverse=True) >>> H.sort (revers: >>> print (H) (21, 19, 17, 15, 1 11, 9 9, 3, 1, 1, 1, 11 Copyright © Pragmathiques 2023, a2023-2024 Fogmathquer 10) Permutation Doo Ae ld, 1, 1, 3, 9, 9, 11, 13, 15, 17, 19, 21 Si je veux permuter le 3 et le 19, je peux e faire de deux fagons, Le 3 est en 5** position donc a "index 4 Le 19 est en avant derniére position, donc & index -2. ‘On procéde comme ga : >>> AL4],Al-2]=A(-2],AL4] >>> print (A) (1, 1, 1, 1, 19, 9 9, 11, 13, 15, 17, 3, 211 ‘On peut aussi le faire en deux temps, mais il faut alors avoir recours 8 une variable auxiliaire. aux~A[-2] >>> A[-2]=AL4] >>> ALA] >>> print (a) (Bp ao 19, 9, 9, 11, 13, 15, 17, 3, 21) Copyright © Pragmathiques 2023 a2023-2024 Progmathiquer D] Les boucles if, for et while : introduction Ceci est une petite introduction sur les boucles, On verra plusieurs exercces parla suit. 1) Les boucles if Jer cas : if sans else Comme pour la fonction def, il faut indenter pour montrer quand s'arréte la boucle, Ici la boucle est exécutée sila condition donne true. >>> if w=0 rint ("La racine de x est :", x#*0.5) La racine de x est : 3.0 On voit que le else est indenté au méme niveau que le if. >>> x=-7 >>> if > print ("La racine de x est : ", x#*0.5) + else print ("Il n'y a pas d nty a pas de racine 3° cas : if elif else Prenons cette fonction Copyright © Pragmathiques 2023 “a2023-2024 Progmathiques 3x41 six<—5 F(x) = {2x47 si-S< xs 12 12x six> 12 On peut utiliser elif else >e> def f(x): valeur = 24x+7 else : valeur =12*x return valeur >>> print (£(-8)) -23 >>> print (£(0)) 7 >>> print (£(20)) 240 ‘On peut également utiliser elif dans les deux derniers (mais dans ce cas la on précise x > 12). >e> def £(x): valeur = 2*x+7 wo12 valeur =12¥x return valeur >>> print (£(-8)} -23 >>> print (£(0)) >>> print (£(20)) 240 Copyright © Pragmathiques 2023 4aProgmathiques On aurait également pu utiliser une boucle if dans la boucle if aprés le else. valeu: return valeur >>> print (£(-8)) -23 >>> print (£(0)) >>> print (£(20)) 240 La fonction qui permet de calculer la valeur approchée d’un nombre Pour avoir une valeur approchée a 'entier prés. >>> def Arrondi (x) if x - int(x) < 0.5: appro = int (x) else : appro = int (x) + 1 return appro >>> Bs rrondi (7.5) >>> print (A) >>> Arrondi (3.7598) Pour avoir une valeur approchée avec n nombres aprés la virgule 2023-2024 Copyright © Pragmathiques 2023 452023-2024 >>> def Arrondivirgule(x,n) + oso xex* (10**n) ac yeArrondi (x) yey/(10**n) or return y >>> Arrondivirgule (3.7596, 2) 3.76 >>> Arrondivirgule(3.7596,1) 3.8 >>> Arrondivirgule (3.7596, 3) 3.76 Copyright © Pragmathiques 20232) Initiation aux boucles for La boucle for kin A répate les instructions indentées pour chaque élément k d’une liste A. Boucle for avec la valeur de k qui n‘a pas d’influence La boucle suivante affiche 4 fois Kamehameha >>> for k in range(1,5): print ("Kamehameha") Kamehameha Kamehameha Kamehameha Kamehameha Boucle for avec la valeur de k quia une influence On veut afficher les 5 premiéres valeurs de la suite (tty) ncn définie par YnEN, wy=3nt1 >>> for k in range(0,5) print ("u",k," 3*ktL) (On peut également les conserver dans une liste U. On crée une liste vide et on I'incrémente au fur et & mesure les valeurs trouvées dans la boucle for, 2023-2024 Copyright © Pragmathiques 2023, a7in range (0, append (3*k+1) 13) (On verra plus tard le cas des suites définies par hérédité. (On verra également que l'on peut conserver les valeurs dans un tableau, 3) Initiation aux boucles while La boucle while répéte les instructions indentées tant que la condition est réalisée. On reprend a suite (14,) xen définie par : YnEN, t= n+ 1 Cette fois, on veut le premier entier m tel que u, > 5000 On a uo qui vaut 1 et la suite est croissante. La boucle while consiste ici a partir de n = 0, d’augmenter 8 chaque fois la valeur den d'une unité jusqu’a ce qu‘on obtienne u,, > 5000. Tant que u,, < 5000, on continue d’inerémenter. >>> while 3*n+1<=5000 nent1 print (n 1667 tyeos = 4999, Une? 002, (On verra les cas avec les suites définies par hérédité dans un autre chapitre. 2023-2024 Copyright © Pragmathiques 2023 482023-2024 Progmathiques II] MATRICES : PREMIERES NOTIONS Dans ce Il, les données sont rentrées dans Shell 0) Importation de la bibliotheque Numpy ‘Avant toute chose dans le programme, pour utiliser les matrices, il faut avoir recours a la bibliotheque numpy. Pour utiliser dans notre programme, i faut d’abord importer la bibliotheque. i existe trois grandes fagons de importer. Import numpy La premiere est de 'appeler avec >>> import numpy ‘Avec cet appel, & chaque fois par exemple qu'on aura recours a array (une fonction pour créer des matrices), on devra le précéder de numpy. ray ({1,2,3] 31 from numpy import * La seconde facon est de 'appeler avec from numpy import Cette méthode importe toutes les fonctions de numpy dans I'espace. On n’a pas besoin de faire précéder de numpy ces fonctions. Copyright © Pragmathiques 2023 492023-2024 Pragmatiqves Cependant, comme dit dans la partie précédente, cette méthode est peu utllisée car plusieurs fonctions de Numpy ont le méme nom que des fonctions d'autres bibliothéques. import numpy as np La méthode la plus courante (et celle qui est privilégiée dans le programme officiel) est ort numpy as ‘Avec cette importation, pour utiliser les fonctions, on a juste besoin de les faire précéder de np. Par exemple np.array({1,2/3]) array([1, 2, 31) 1) Conception de matrices Créations de matrices de facon explicite avec np.array ‘On commence le programme par : >>> import numpy as np Pour construire une matrice de fagon explicite, on ut {a fonction np.array() ‘On encadre toute la matrice de crochets [] CChaque ligne est entre crachets [] et les coefficients sont séparés par des virgules. Pour changer de ligne dans la matrice, on met une virgule aprés le crochet | et on ouvre un. autre crochet [. La matrice ligne a un statut spécial qui lui permet de ne pas forcément avoir les crochets qui encadrent la matrice. Mais je te consellle de les mettre quand méme car sinon c'est considéré comme un vecteur. Quand on appelle la variable dans Shell, elle nous envoie la matrice sous le format array. Pour afficher la matrice « sous le format que lon écrit », on utilise la fonction print. Copyright © Pragmathiques 2023s. 7 ceo onventsmarenA=(i 2 a8=(is)erc=( 2 >>> Aenp.array([1,2,3]) >>> A array({1, 2, 3)) >>> print (A) ‘Mais on peut aussi écrire np. array({({1,2,3}]) >>> A array({{1, 2, 3]]) >>> print (A) (1 20377 Cette forme est préférable (cf chapitre sur les transposée) En revanche, pour B et C, on n’a qu’une possibilité >>> Benp.array({(7], [15], (2]]) >>> print (B) 7 5) 120 >>> Cenp. array ({11,3,4/3], [716,52], [1,4,8,31]) ay([[l, 3, 4, 31, (7, 6 5, 21, O, 4, 8, 331) >>> print (Cc) [3437 (7652) 483) Remarque Sion veut mettre e ou 1 dans une matrice on écrira np.e ou np.pi. soe one 2023-2024 Copyright © Pragmathiques 2023 si2023-2024 Les matrices np.ones, np.zeros et np.eye (On commence le programme par import numpy as np La commande np. ones () erée des matrices avec que des 1. La commande np. zeros () crée des matrices avec uniquement des 0. Quand il n'y a qu'un nombre dans la parenthése, c'est une matrice ligne, Quand ily a deux nombres, c’est une matrice rectangulaire avec le premier nombre qui est le nombre de lignes et le second, le nombre de colonnes. Attention 3 I'écriture, les deux nombres sont dans une nouvelle parenthése (il y a donc deux parenthases, sinon ily a un message d’erreur). >>> Ul=np.ones (5) >>> Ul array, (Osseo eel oemel | >>> print (U1) angel ogee Teneo p-ones ( (1,5) >>> print (U2) feast >>> Usnp.ones ((3,4)) >>> print (U) CLeedenloedn fea ay [deeded ed >>> 1p. zeros (4) >>> print (01) [0. 0. 0. 0.) >>> O=np. zeros ((4,2) >>> print (0) ((0. 0. (0. 0 0. 0 9. Copyright © Pragmathiques 2023, s2>>> 0: 1p zeros ( (1, 4)) >>> print (02) [f0, 0. 0. 0.9) La commande np. eye () erée des matrices identités. Le premier nombre entre parentheses, est le nombre de lignes, le second est le nombre de colonnes. Ici iln'y a qu’une seule parenthése. Attention au cas de la matrice D2. >>> Denp.eye(4,4) >>> D array({({1., 0., Oo, (ee thon Con [er Org ter (og Che! Wao >>> print ( ([1. 0. 0. 0. 0.) (0. 1.0 0.1 [0. 0. 1. 0. 0.11 Le cas D2 nous montre que quand la matrice n’est pas carrée, elle est quand méme créée. Dans ce cas, les éléments a,, valent 1 et les autres valent 0. Copright © Pragmathiques 2023 2023-2024 532023-2024 Progmothiques 2) Extraction et modifications d’éléments d’une matrice 5 2] 831) On commence le programme par >>> import numpy as np Extraction et modification des coefficients d’une matrice Dans Python, les index de lignes et de colonnes commencent 8 0. Ainsi a premiére ligne est index 0 et la premiére colonne est index 0 Ainsi, C (0,1) est le coefficient de index 0 en ligne et 1 en colonne et donc le coefficient de la 1° ligne et 2 colonne, Cli, j] est le coefficient de ta (i + 1)'"* ligne et de ta (j + 1)" colonne de C, (On peut ainsi extraire (donc faire apparaitre) le coefficient d'une matrice. On peut également modifier un coefficient d'une matrice. Par exemple, C[1,0]=87 signifie : JFaffecte 87 au coefficient de Ia ligne 2 et colonne 1 de la matrice C. >>> print (C(0,0]) >>> print (C[1,0]) >>> C[1,0}=87 > print (Ct 0) Copyright © Pragmathiques 2023,Progmathiques >>> print (C) ile a A (87 6 5 2) [1 4 8 3] Extraction et modification de lignes (1, +] signifie « 2° ligne de C » (puisque I’index 1 correspond a la ligne 2). CLL, +) permet d'extraire la 2° ligne de C. CL1, +] =1 signifie 'affecte la matrice L ala 2** ligne de C. Cette commande permet de ‘modifier la 2 ligne de C et de la remplacer par la matrice L. On peut également rentrer directement une matrice aprés le signe = >>> print (C{1. 876 5 2) array ([{1,32, 30,4011) >>> print (L) [{ 1 32 30 401) >>> CLL, :]=b >>> print (C) tt2 a3] {1 32 30 40) (1 4 8 3) >>> Cll, :]=np.array({{ 1, 32, 30, 75]]) >>> print (C) (1 3 4 3) 32 30 75] cil 438 3i) 2023-2024 Copyright © Pragmathiques 2023 552023-2024 Extraction et modification de colonnes 2) signifie 3** colonne de C (oul, encore indexation), +2] permet d’extraire la 3** colonne de C. Cependant elle est renvoyée sous forme de vecteur ligne. Pour renvoyer sous forme de colonne la 3*”* colonne de C, on 6 >>> print (C[:,2]) >>> print (C t4) (30) ten (21) Pour modifier une colonne et la remplacer par une autre, II faut utiliser a 2""* notation (car Python consi re C[ :, 2] comme une matrice (3,1) et donc ne peut pas la remplacer par une matrice colonne (1,3) }. >>> Nenp.array({{90], [91], [92]]) >>> print (N) (90) 91) 19211 (2) nt (C) ([1 390 3) [1 32 91 75 [1 492 3)) Et de méme pour changer la premiére colonne sans créer une matrice au préalable : >>> Clr, [0] sarray({(21], [22], (231]) >>> print (C) [121 3.90 3) [22 32 91 75) [23 492 31) Copyright © Progmathiques 2023 562023-2024 Extraction et modification d’une sous-matrice Cl{arb,c:d}) extrait une sous-matrice de la matrice C. La pattie a:b correspond aux lignes sélectionnées. Comme pour range, le deuxiéme nombre représente un obstacle (ou un intervalle ouvert). On extrait done les lignes entre I'index a et index b-1. Done entre la a#12me ligne et la b*™* ligne. La pattie c:d est la méme chose mais pour les colonnes. Ainsi, (1:2, 1:2] extrait une sous-matrice de la matrice C délimitée entre la ligne 1 + 1 et la ligne 2 et la colonne 1+ 1 et la colonne 2. En fait, on extrait qu'un seul coefficient : le coefficient de la 2°" ligne et 2°" colonne. ct1:3, 3] extrait une sous-matrice de la matrice C en prenant les 2°" et 3° lignes et les 2ames et 3° colonnes. >>> array([[21, 3, 90, 3], 32, 91, 75), 4, 92, 33) >>> D=C {122,112 >>> print (D) (1321) >>> print (E) [32 91] >>> print(C[1:3,1:4]) [32 91 75] [492 31 Quand on ne met pas le nombre avant le :, cela signifi qu’on prend le tout premier index. (done 0) et quand on ne met pas de nombre apres le : cela signifie qu’on prend le tout dernier index a justfie le fait que = signifie que t'on prenne toute la ligne ou toute la colonne. >>> print (C[1,#]) [21 3.90 3)) Copyright © Pragmathiques 2023, 37'ci, on prend les lignes entre index 0 et 'index 1-1, done, la premigre ligne. Pour les. colonnes, on prend les 4 'ci, on prend les lignes entre index 0 et index 2-1, donc les lignes 1 et 2. On prend toutes les, colonnes, > print (Cli, [f 390 3) (32 91 75) 92 31] Ici, on prend toutes les lignes et on prend les colonnes entre lindex 1 et les suivantes, done les colonnes 2.8 4. 2023-2024 © Pragmathiques 2023, 582023-2024 FProgmathiques Exercices ‘aprés ECE EDHEC 2015 Exercice 1 a) Créer la matrice Z a l'aide de la commande np.ones et de boucles for et afficher. bb) Créer la matrice Z 8 l'aide de np.zeros et de boucles for et I'afficher. €) Créer la matrice Z a I'aide de np.ones et d’une modification avec np.zeras et l'afficher. Rappel. Attention, la premiére ligne est indexée a 0 et la premiere colonne également. Quand on ne met que deux nombres dans range, le pas par défaut est 1. Le dernier nombre est 'obstacle donc on s‘arréte a I'entier précédent. a) > 2=np-ones((5,5)) for i in range(1,4): for j in range (1,5): ,j)-2 >>> print (2) Copyright © Pragmathiques 2023 59b) >>> Zenp. zeros ((5,5)) >>> for j in range(0,5): Bog 2(0,4]=1 Ears 2(4,3]-2 >>> for i in range(1,4): is 2{i,0]=1 >>> print (2) [dee ete] (1. 0. 0. 0. 0.) (1. 0. 0. 0. 0.) [1. 0. 0. 0. 0.) Gea aa. 1a ¢ >>> Zenp.ones ((5,5)) >>> Z{1:4,1:5]=np. zeros ( (3, 4)) >>> print (2) dee eel et) I. 0. 0. 0. 07 [1.0 0. 0, 0.7 [1. 0. 0. 0. 0.7 [aeeueieeeaees 2023-2024 Copyright © Pragmathiques 2023 602023-2024 Progmatniques Création d’une fonction qui donne une matrice Créer une fonction nommée Matrice qui pour une valeur de p renvole cette matrice 0 >>> def Matrice(p) + =np. zeros ((6,6)) (1:6, 0:5]=np-eye (5,5) *P Q{0, 0]=p Q[:, 5]=np.ones (6) *(1-p) return Q >>> Matrice(0.4 array([[0.4, 0. , 0.» 0. + 0. » 0.6], 10.4, 0. , 0. , 0.» 0. + 0.61, 10. , 0.4, 0. , 0. + 0. + 0.6), [0. , 0. , 0.4, 0. , 0. » 0.61, [0. , 0. , 0. , 0-4, 0. 0-6), [0., 0. , 0. , 0. , 0-4 0.611) extrait une sous-matrice 1 :6 signifie qu'on prend les ‘Attention aux indices :Q[1:6, 0 lignes entre index 1 et index 6 (ce dernier étant non inclus}, donc on prend entre I'index 1 et index inclus, c'est-&-dire entre la ligne 2 et la ligne 6, De méme, 0:5 signifie qu’on prend les colonnes entre 'index 0 et lindex 4, cest-a-dire entre la.1°* colonne et la S*"* colonne. Copyright © Pragmathiques 2023 61Frogmathique 3) Créations spécifiques de vecteurs lignes Le vecteur ligne avec np.arange (On commence le programme par : >>> import numpy as np Le commande np.arange(4.o,p) fonctionne comme range. Elle créer un vecteur ligne sur intervalle ouvert [a, bf avec un pas de p. Sauf qu‘icia et b ne sont pas forcément des entiers. np.arange(-2, 16,2) >>> print (A) 8 10 12 14) >>> A=np.arange(1.7, pi, 0.1) > print (A) [1.7.1.8 1.9 2. 2.1 2.2 2.3 2.4 2.5 2.6 2.7 Sree Lorsque le 3° nombre n’est pas présent, le pas par défaut est 1. >>> Asnp.arange (5,19) > print (A) 6 7 8 91011 12 13 14 15 16 17 18) Le pas peut étre négatif. >>> Aenp.arange(3,-10,-2) >>> print (A) 3.1- 7-9) Si la matrice ne peut pas étre créée, alors c'est une matrice vide [] (que 'on pourrait, concaténer avec des fonctions hors programme comme np.concatenate ou np.vstack) 2023-2024 Copyright © Pragmathiques 2023, 22023-2024 np .arange (0,100 >>> print (A) arange(3,-8) >>> print (A) (On commence le programme par import numpy as np Les 3 nombres de instruction np.linspace(d,a,NTe) correspondent & Le réel d pour la valeur de départ. Le réel a pour la valeur d’arrivée, L’entier NT pour le nombre de termes. Le nombre d’arrivée est ic la valeur exacte (contrairement np.arange). genp. Linspace (3, 10, 29) signifie que l'on crée un vecteur-ligne dont le premier terme est 3, le dernier terme est 10 et le nombre de termes est 29. Icila valeur finale est atteinte quoiqu'il arrive. Le pas est un pas calculé par Python pour que chaque terme augmente avec la méme valeur. On obtient ici 28 segments de méme longueur. >>> genp. Linspace(3, 10,29) >>> print (g) [3.3.25 5 5.25 5.5 5.75 7.5 7.75 8 8.25 Pourquoi la raison est-elle de 0,25 ? Chaque terme augmente de la méme valeur. On a une suite arithmétique de 1° terme 3 Et de 29°" terme 10. (On se souvient de la formule : uy = tt + 28 Xr. La raison est done Copyright © Pragmathiques 2023, 63y 2023-2024 Progmathiqu ~ 38 0.25 On a donc cré¢ ici les 29 premiers termes de la suite arithmétique de premier terme 3 et de raison 0,25. Et done dans le cas général dernier terme — premier terme nombre de termes — 1 Quand on écrit np.tinspace(-4,5,19), est-ce que O est contenu dans les coefficients ? Si oui, & quelle place ? Onaalors Supposons qu'il existe n € [1,19] tel que ty, Un = Uy + (n—1) Xr 0, done 1 O=-44(n-I) x5 4x2 Copyright © Pragmathiques 2023 64Synthase 1 w= 449-1) xz=0 Done Oest contenu dans linspacel-4,5,19), et son coefficient est le 9 Remarque Ona Linspace (-4,5,19)) “2.5 -2, -1.5 3.5 4.0 445 4) Calcul entre les matrices Les opérations coefficient par coefficient Les opérations 4°A, A+, A+B, A~B, A*B, A/B et A**B sont des opérations qui se font coefficient par coefficient. ‘On obtient ici les matrices : (A x a,j), (a,j + A), (@),) + Bi), (iy — Buys (iy X Bis) >>> import numpy as np Aenp.array({[1/2,3], [4,5, 6], (7/8,91]) print (a) (1 2 3 [45 6) 17891) *np.ones ( print (B) (110. 10, 10.] (10. 10. 10.) [10. 10. 10.) 2023-2024 Copyright © Pragmathiques 2023, 652023-2024 Progmathiques >>> print (A+1) (23 4) [5 6 7] [8 9103) >>> print (A¢mp. ones ((3,3)}) Ir2. 3. 441 15. 6. 7) 18. 9, 10.11 >>> print (A+5) 116 7 a {910 11) (22 13 141] >>> print (A+B) (42. 12. 13.1 (14, 15. 16.1 (17, 18. 19.3) >>> print (A~B) [[-9. -8. -76 [-6. -5. -4.) [-3. -2. -1.11 >>> print (A*B) [[10. 20. 30.) [40. 50. 60.) 170. 80. 90.1) >>> print (A/B) (0.1 0.2 0.3) [0.4 0.5 0.6) [0.7 0.8 0.91) >>> print (A**B) [{1.00000000e+00 1.02400000e+03 5.90490000e+04) [1.04857600e+06 9.76562500e+06 6.04661760e+07] [2.82475249e+08 1.07374182e+09 3.48678440¢+09) } Copyright © Pragmathiques 2023, 66d 2023-2024 Proamatncues Pour mettre une matrice & une puissance négative, il faut que les valeurs dans la matrice soient de type float et non de type int. >>> print (A**-1) Traceb: (most recent call las’ File "cpyshell#13>", line 1, in
print (A**-1) ValueError: Integers to negative integer powers are not allowed. Pour se faire on a deux solutions : La premiere est de rentrer « 8 la main » sous forme float en mettant des . aprés chaque valeur. >>> Aenp-array(((1.,2-,3-]1 [dey 18.9-])) >>> print (A) (aenzeesn) 4. 5. 6 [7, 8. 9.) >>> print (A**-1) a. 0.5 033333333) 0.25 0.2 0.16666667 (0.14285714 0.125 0.11111111)1 La seconde est une idée que fai eue en regardant un résultat plus haut. Tu remarques que quand j'ai fait A/8, es résultats étaient en float. Qu’en esti sion divise par une matrice avec uniquement des 1? >>> Renp.array({(1/2, 3], (4,5, 6], (7/8/91) >>> print (A) (23) {45 6) [78 91) >>> AeA/np.ones((1,1)) Copyright © Pragmathiques 2023 o7>>> print (A) ittee2 ese ua. >>> print (A**-1) a 0.5 0.33333333] (0.25 0.2 0.16666667] (0.14285714 0.125 0.111121111) Eh oui, la division a transformé les entiers en float et 1a on peut faire la puissance -1 (qui je le rappel permet oben non pas inverse dela matic, masa marie (+) On aurait également pu diviser par 1 >>> Aenp.array([{1,2,3], (4,5, 6], 7,8, 911} >>> print (A) (1 23) 456 (7.8 9) >>> APB/1 >>> print (A) alee a U4. 5. 6.) I. 8. 9.) >>> print (A**-1) a. 0.5 0. 333333331 [0.25 0.2 0.166666671 [0.14285714 0.125 0.111121111)) Evidemment, situ utilises cette méthode, détaille bien et explique bien ce que tu fais ! 2023-2024 Copyright © Pragmathiques 2023, 6aExercice Utiliser np.ones et np.eye pour créer une matrice. 24 4 Dineramatice(4) <0. 4 Jaen ons tee 194 >>> A=d*np.ones ( (3, 3) }-12*np. eye (3, 3) >>> print (A) [I-8. 4. 4) [4,-8.0 44) 4,-8.1) Le produit de matrices AB \Vu que A*B ne donne pas le produit AB, i faut une opération pour le calculer. C'est Vinstruction np .dot (A,B). existe également une instruction A. cot (B) mais celle-ci est « non exigible » dans le programme officiel. import numpy as np >>> Aenp.array({[1,2,3]-[4,5, 6], (7/8, 9}]) B-10*np. ones ((3,3)) y (L183, 340 4] (3,3, 5451, 1,142,211) cenp.a >>> print (np.dot (A,B) ) [1 60. 60. 60.) 1150, 150. 150.] [240. 240. 240.1) Pour calculer le produit A x B x C, on peut procéder de deux faons. ‘On crée une matrice intermédiaire >>> Denp.dot (A,B) >>> print (np.dot (D,C)) ({ 420. 420. 480. 660.) [1050. 1050. 1200. 1650.] [1680. 1680. 1920. 2640.1] 2023-2024 Copyright © Pragmathiques 2023 cyOu on fait tout sur une seule ligne. >>> print (np. dot (np.dot (A,B) ,C)) [ 420. 420. 480. 660.) [1050. 1050. 1200. 1650.) [1680. 1680. 1920. 2640.1) On remarque que le np.dot(8,C) est tout simplement le résultat du produit de BC (done la matrice BC) (On aurait évidemment pu faire dans Vautre ordre : >>> Denp.dot (B,C) print (np.dot (A,D)) 660.) 1200. 1650.) [{ 420. 420. 48 050. 1051 (1680. 1680. 1920. 2640.)) ‘Quen une ligne dans autre ordre print (np.dot (A,np.dot (B,C))) 420. 420. 480. 660.1 50. 1050. 1200, 1650. (1680. 1680. 1920. 2640.)} 5) Inverse et transposée d’une matrice on ase amare = (4 8) Inverse d'une matrice avec la bibliotheque numpy.linalg La bibliotheque numpy. 1 Analg est la bibliothéque liée a I'algebre linéaire. On a deux fonctions dans cette bibliothéque pour calculer Inverse d'une matrice. 2023-2024 Copyright © Pragmathiques 2023, 70La premigre est np. Linalg. inv (D) et la seconde est np. linalg.matrix_power (D,~1) La seconde fonction permet de calculer la puissance dune matrice. np. linalg.matrix_power(D, 3) caleule done D? >>> import numpy as np >>> Denp-array({(1,6], (2,711) >>> print (D) (f1 6] 271 >>> As 1p. Linalg. inv (D) >>> print (Al [[-1.4 1.2) [0.4 -0.21) >>> Aenp.linalg.matrix_power(D,-1) >>> print (A) “1.40 1.2) [0.4 -0.2)] >>> Aenp.linalg.matrix_power(D, 3) >>> print (A) [1109 414) [138 523)) (On peut également importer la bibliotheque numpy.linalg ce qui nous permet d’écrire une forme abrégée de la fonction. >>> import numpy as np >>> import numpy.linalg as al >>> De p-array(({1, 6], [2,71]) >>> print (D) ttl 6] 271 >>> Eeal.inv(D) >>> print (E) [[-1.4 1.21 [0.4 -0.21) 2023-2024 Copyright © Pragmathiques 2023, n2023-2024 fie iol >>> Eeal.matrix_power (D,~1) >>> print (E) (i-1.4 2.2] [0.4 -0.29) >>> Exal.matrix power (D, 3) >>> print (E) [t109 414) (138 523)) Evidemment, sila matrice n’est pas inversible, ca ne marche pas. 148 Sionprendn= (14 8 ).ona 14 x 1221 +8 = 0 dona matrie nes pas invest >>> Rei p-array({{14,8], [21,12]]) >>> print (R) (i148) [21 121 >>> Feal.inv(R) Traceback (most recent call last): “
", line 1, in
Feal.inv(R) File array function internals>", line 200, in inv numpy.linalg.LinAlgError: Singular matrix Transposée Pour calculer la transposée d’une matrice A, on écrit instruction np. transpose (A) Remarque :la méthode A. transpose () est « non-exigible » dans le programme. >>> import numpy as np >>> Al=np.array((1,2,3]) >>> A2enp.array({[1,2,3]]) >>> Benp.array({(7], [15], (21) >>> Cenp.array([[1, 3,4, 3], [76,54 2]¢ (1, 4/8,3)]) Copyright © Pragmathiques 2023 nfrogmatiu. >>> print (Al) 23) >>> print (A2) ti 2317 >>> print (B) 7 (5) Lay >>> print (C) [11 3.43) (7652) (14831) >>> print (np. transpose (Al) } (23) >>> print (np. transpose (A2) } ct 2 3) >>> print (np. transpose (B)) 1745 2) >>>. Fenp. transpose (C) >>> print (F) ta74) 13.6 4] [45 8) (3.2311 (On remarque que la matrice A1 n‘est pas véritablement transposée, car en réalité comme il n'y a pas le double crochet, elle n’a pas le statut de matrice, mais de vecteur. C’est pourquoi je disais précédemment de préférer ’écriture du double crochet pour la matrice ligne 2023-2024 Copyright © Pragmathiques 2023 B2023-2024 roamatiqves 6) Matrices et fonctions 1° partie Cas général Lorsque I'on applique une fonction f répertoriée dans la bibliothéque numpy & une matrice (aij), ,0n obtient une matrice de méme taille ou chaque coefficient est f(a,)), Cest-&- lamatrice (/(a)),, >>> import numpy as np >>> Cenp.array([(1,3,-4], (7.5, 6.8, 2], [-1,-4,-8.3]]} >>> print (C) >> print (np-exp(C) } [12.71828183e+00 2.00855369e+01 1.83156389e-02) [1808042410403 8.97847292e+02 7.38905610e+00) [3.67879441e-01 1.83156389e-02 2.48516827e-04)} >>> print (np. abs (C)) Il. 3. 4.) (7.5 6.8 2. ] 4.8.31] >>> print (np. log (np.abs(C))) [t0. 1,09861229 1.38629436] [2.01490302 1,91692261 0.69314718] 0. 1.38629436 2.11625551]} >>> print (np.sart (np.abs(C)}) ta. 1.73205081 2. 1 [2.13861279 2.60768096 1.41421356] fae an 2.88097206]] >>> print (np. floor (C)} tt 1. (7. 6 24 (-1. 4. -9.1) Copyrient © Pragmathiques 2023, ™[as jhe e Et pour les maths approfondies (jai la flemme de faire deux docs pour le Il] © ) array([(np.pi,np.pi/2], [-np-pi,np-pi/3}]} >>> print (A) ({ 3.14159265 1.57079633] [-3.14159265 1.04719755}) >>> print (np.sin(A)) [{ 1.22464680e-16 1.00000000e+00} [-1.22464680e-16 8. 66025404e-01)} >>> print (np.cos (A) ) [{-1.000000e+00 6.123234e-17] [-1.000000e+00 5.000000e-01)1 >>> print (np.tan(A)) [[-1.22464680e-16 1.63312394e+16) [ 1.22464680e-16 1.73205081e+00]] La fonction np.shape La fonction np.shape() renvoie une matrice a une ligne et deux colonnes. Le premier coefficient est le nombre de lignes de la matrice & laquelle on affecte la fonction et le deuxiéme coefficient est le nombre de colonnes. >>> Cenp.array([{1,3,4, 31, (7,675.2), (14/8/31) >>> print (C) (11.343) (7652) (14833) >>> Denp. shape (C} >>> print (D) (3, 4) ‘On peut également attribuer ces valeurs & des variables (ce qui permet d’avoir le nombre total de coefficients en les multipliant) Copyright © Pragmathiques 2023 2023-2024 a2023-2024 >>> a, b=np. shape (C) >>> print (a) >>> print (b) 4 >>> print ("La matrice posséde",a*b, "coefficients") La matrice posséde 12 coefficients Les fonctions np.min, np.max, np.mean, np.var et np.std La fonction np . nin donne le coefficient minimum d'une matric. La fonction np .max donne le coefficient maximum d'une matric. La fonction np .mean donne la moyenne de tous les coefficients d’une mattice. La fonction np..medtian donne la médiane de tous les coefficients d'une matrice. La fonction np . var donne la variance de tous les coefficients d'une matric. La fonction np . std donne Iécart-type de tous les coefficients d’une matrice, >>> import numpy as np >>> Renp.array([{1,5,7], (8,3, 4], (2,9, 6]]} >>> print (A) (157) [834 2 611 >>> print (np.min(A)) >>> print (np.max(A)) print (np.mean(A)) print (np.median{A)) >>> print (mp. var(A)) 6. 666666666666667 >>> print (np.std(A)) 2.981988997471611 Copyright © Pragmathiques 2023, 76Progmathiques La fonction no.min (A, 0) renvoie un vecteur dont les composantes sont les minimums de chaque colonne de A. La fonction n -min (A, 1) renvoie un vecteur dont les composantes sont les minimums de chaque ligne de A. >>> print (np.min(A,0)) 34) >>> print (np.min(A, 1)) 132) On a le méme procédé avec np.max(A,0) et np.max(A,1) >>> print (np.max (A, 0)) (897) >>> print (np.max(A, 1) ) (78 9) La function np.mean (A, 0) renvole un vecteur dont les composantes sont la moyenne de chaque colonne de A. La fonction np.mean (A, 1) renvoie un vecteur dont les composantes sont la moyenne de chaque ligne de A. >>> Benp.mean (A, 0) >>> print (B) (3, 66666667 5. 66666667 5.66666667) >>> print (np.mean(A,1)) a. 5. 66666667] On a le méme procédé pour np.median(A,0), np.median(A,1), np.var(A, 0), np. var (A,1),np.std(A, 0) etnp.std(A, 1). >>> print (np.median (A, 0) } (2.5. 6.1 >>> print (np.median (A, 1)) [5. 4. 6.) >>> print (np. var (A, 0)) [9.55555556 6.22222222 1.55555556] 2023-2024 Copyright © Pragmathiques 2023 7Progmathiques >>> print (np. var (A,1)) [6.22222222 4. 66666667 8.22222222] > print (np.std(A,0)) 3.09120617 2.49443826 1.24721913) >>> print (np.std(A,1)) (2.49443826 2.1602469 2.86744176) Les fonctions np.sum et np.prod (Les fonctions np . prod ne sont pas au programme, mais je les mets car je me dis qu’on peut te les donner en exercice en te les définissant). La fonction np. sum donne la somme de tous les coefficients d'une matrice. La fonction np. prod donne le produit de tous les coefficients d'une matrice. >>> import numpy as np >>> Aenp-array({(1,5,7], (8,3, 4], [2,9,6)]] (np. sum(A)) >>> print (np.prod(A)) 362880 La fonction np. sum (A, 0) renvole un vecteur dont les composantes sont la somme de chaque colonne de A La fonction np. sum (A, 1) renvole un vecteur dont les composantes sont la somme de chaque ligne de A On ale mame procédé avec np. prod. >>> print (np.sum(A,0)) (11 17:17) >>> print (np.sum(A,1)) (13 15 17) print (np.prod(A,0)) 16 135 168) 2023-2024 Copyright © Pragmathiques 2023 aprint (np.prod(A,1)) 35 96 108) Remarque : >>> np.prod (np. shape (A) ) a nous donne le nombre de coefficients d'une matrice, Les fonctions np.cumsum et np.cumprod La fonetion np . cums um (A) donne un vecteur dont les composantes sont la somme. cumulée des coefficients de la matrice A. Le sens est de gauche a droite, puis on passe a la ligne suivante. >>> import numpy as np >>> Renp.array(({1,5,7], (8,3, 41, (2,9,6}]) [2.9 61) >>> print (np. cumsum(A)) [1 6 13 21 24 28 30 39 45) Le premier coefficient est 1, puis 1+ 5 = 6, puis 1+5+7=13, puis +5+7+8= ete. Lacommande np. smsum (A, 0) renvoie une matrice dont chaque colonne est la somme ‘cumulée des coefficients (on « repart 8 0 » & chaque nouvelle colonne}. Dans l'exemple suivant les coefficients de la premiére colonne sont : 1, 1 + 8 = 148-42 =11. Eton repart 80 avec la 2*"* colonne. >>> Benp. cumsum (A, 0) >>> print (B) (15 71 [9 ei) mii. 2023-2024 Copyright © Pragmathiques 2023 ey2023-2024 Progmathiques la commande np. cumsum A, 1) renvoie une matrice dont chaque ligne est la somme cumulée des coefficients (on « repart 80 » 8 chaque nouvelle ligne). Dans Hexemple suivant, les coefficients de la premiére ligne sont :1, 1 +5 = 6, 14547 '3. Et on repart a 0 avec la 2° ligne, >>> Benp.cumsum (A, 1 >>> print (B) [t1 6 13) [8 11 15) (21117) De méme que précédemment, la fonction np. cumprod n’est pas au programme, mais je la ‘mets quand méme car on peut te 'introduire dans un sujet. Elle fait la méme chose que np . cumsum mais avec un produit au lieu d’une addition np-array({[1,5,7]¢ (8,3, 4]. (2,9, 6}]) >>> print (A) 157] [8 3.4) (2 9 61] >>> print (np.cumprod (A) } ta 5 35 280 © 840-3360 ©6720 60480 362880] >>> print (np.cumprod (A, 0)) [ios 7 28) [16 135 1681) >>> print (np. cumprod(A,1)) tl 1 5 35] (8 24 96) { 2 18 108]) Les fonctions liées a l’algébre Dans la bibliothéque numpy.1inalg ona deux fonctions liées & 'alg&bre, Lafonction a1 «ma: rix_yank (A) donne le rang de la matrice A. Copyeight © Pragmathiques 2023,2023-2024 Lafonction a1.e5 (A) renvoie deux matrices : la premiére contient les valeurs propres de A et la deuxieme des vecteurs propres de 4 (2*”* année). On peut les stocker dans deux matrices différentes. 9 6 2 Prenons lamatriceA=( 10 7 +) -10 -6 3 >>> import numpy as np >>> import numpy.linalg as al p-array([[-9,~6, 2], [10,7,-2), [-10,-6,3}]) >>> print (A) ([-9 -6 2) [10 7 -2) [-10 -6 31) >>> print (al.matrix_rank(A)) 3 >>> print (al.eig(A)) (array({-1., 1., 1.J}, array({{-0.57735027, -0.49236596, 0.11241989], [ 0.57735027, 0.61545745, 0.140524861, [-0.57735027, -0.61545745, 0.983674 11) >>> valeurs, vecteurs=al.eig(A) >>> print (valeurs) t >>> print (vecteurs) [{-0.57735027 -0.49236596 0.11241989) { 0.57735027 0.61545745 0.14052486) [-0.57735027 -0.61545745 0.983674 }) Perce La forme des vecteurs propres n’est pas la plus belle... ‘On peut aussi calculer le rang de A ~ Al avec >>> print (al.matrix_rank(A-np.eye (3, 3))) 1 >>> print (al.matrix_rank(A-(-1) *np.eye(3,3))) 2 Copyright © Pragmathiques 2023, anProgmathques Ce qui est utile car la dimension du sous-espace propre est dim(E) ~ rg(A 21). Donc aux concours, on peut te poser des questions autour de a. Les fonctions que I’on crée avec def (On peut utiliser une fonction que l'on a définie et 'appliquer & une matrice comme les fonctions np.exp et np.abs. 'I faut pour cela la vectoriser au moyen de f=np.vectorize(f) si le nom de la fonction est f. Deux exemples. numpy as np array({(1,5,7], (8,3, 4], [2,9,6]]) >>> def £(x) >> fenp. vectorize(£) >>> £(A) array([[10, 50, 70), 30, 401, 90, 60))) >>> def calcul (x) return 100*x-10 >> A) array({{ 90, 790, 7) Comparaisons des coefficients d’une matrice Comparaison d'une matrice avec un nombre (On peut comparer une matrice avec un nombre. Elle renvoie alors une matrice de méme taille que la matrice, avec des true et des false dans les coefficients. 2023-2024 Copyright © Pragmathiques 2023 22023-2024 Elle analyse coefficient par coefficient sila condition est vérifiée et renvoie alors les résultats sous forme de true et false. >>> import numpy as np >>> Aenp.array(((0,-4],(2,10]]) >>> print (A) If 0-4) [21011 >>> print (A==0) [{ True False] [False False]] >>> print (A!=0) [[False True) [ True True)] >>> print (A>0) [[False False] { True True]] >>> print (A
>> print (A>=0) {{ True False] True True]] >>> print (Ac=0) [{ True True] (False False]] >>> BeAD2 >>> print (B) [(False False] (False True}] Copyright © Pragmathiques 2023 3Comparaison d’une matrice avec une autre matrice coefficient par coefficient (On peut aussi comparer deux matrices entre elles. Les coefficients a,,, et b,, sont alors ‘comparés un par un et une matrice true/false est envoyée. >>> Asnp.array([[0,-4],[2,10]]) >>> print (A) [ft 0-4) [2 10)) >>> array (({1,-4],[1,-31]) >>> print (B) (1-4) Ld =3)) >>> print (A==B) [[False True] [False False}] >>> print (A!=B) [[ True False] [ True True]] >>> print (A>B) [[False False] [ True True]] >>> print (ASB) [{ True False) ise False}] >>> print (A>=B) [(False True) [ True True]] >>> print (A<=B) [f True True] [False False] 2023-2024 Copyright © Pragmathiques 2023 84Proomathiques Copyright © Pragmathiques 2023, 2023-2024 85dl 2023-2024 Progmathiques TIT] DEF, IF ELSE ET RESOLUTIONS D’EQUATIONS 1) Utiliser def avec plusieurs variables de sortie. (On a vu en I} B} 3) comment créer une fonction avec def. ‘On peut rentrer plusieurs variables d’entrées, mais on peut également avoir plusieurs valeurs de sorties. Prenons comme exemple une fonction def qui pour des valeurs de x et p nous renverrait : + Lecaleul de Sx © Lecalcul de 3x + 2p © Lecalcul de p +3 >>> def hix, p) yr5*x r=3*xt2*p 2 +3 return (y, 7, 2) >>> h(1,2) (7, 5) est le nom de la fonction Les antécédents sont x et p Quand on appelle la fonction avec h(1,2), la fonction nous renvoie 3 valeurs qui correspondent a 5x, 3x + 2p zr p +3 pour x = 1etp >>> type((5, 7, 5))
(5,7,5) est un tuple, C'est-a-dire une structure de données en Python qui stocke des valeurs qui peuvent étre de type différent. La grande différence avec une liste, est que ces valeurs ne peuvent étre modifiées, et le tuple lui-méme ne peut pas étre modifiée, ou alors on créerait Un autre tuple comme dans I'exemple suivant : 5)+(*nouveau",) a Copyright © Pragmathiques 2023 862023-2024 En revanche, quand on écrit juste h(1,2), on ne récupére pas les valeurs dans des variables. La variable y utilisée a lintérieur de la fonction def, ne conserve pas sa valeur une fois la boucle terminge, >>> print [y) Tracebac (most recent call last): File "
", line 1, in
print (y) Namefrror: name is not defined Pour conserver ces valeurs, on a deux méthodes possibles. La premiere est d'affecter le h(1,2) & une variable de sortie qui sera un tuple et on erée une variable y qui prend I'index 0 du tuple (donc la premiére valeur), une variable r qui prend Vindex 1 du tuble (donc la 2*** valeur), et une variable z qui prend I'index 2 du tuple (la... ou: ‘tu as compris l'histoire !) >>> Resultat=h(1,2) >>> ysResultat (0] >>> r=Resultat [1] >>> zsResultat [2] >>> print (y) 5 >>> print 7 >>> print (2) La deuxiéme méthode est d’affecter directement les 3 variables a gauche du =h(1,2) >> yer, zsh (1,2) >>> print (y) >>> print (x) 7 Copyright © Pragmathiques 2023,Notons que on n’est pas obligé d'utiiser y, ret z en variables, méme si dans le def, c'est celles qui sont utilisées. >>> tu, veh (1,2) >>> print (t) >>> print (u) 7 >>> print (v) 5 2023-2024 Copyright © Pragmathiques 20232023-2024 Progmathiques 4) Résolutions de systemes x+6y=2 (On cherche a résoudre le systéme | ax +7y =3 Sous forme matricielle on a pret Etenposanta=(! $), x=())et#=(2) AX =B Et aprés calculs 14x + By =2 ence tsyime | 113 pasde solution, ca matric 21x + 12y = 4 8), n=(St 8)restpasinvere Résoudre un systame avec al.solve Aprés avoir appelé la bibliothéque numpy.linalg, la fonction al.solve(a,b) résout léquation ax=b, x+6y=2 On applique avec A 2 . 8) et# = (2) pourlesysteme { — 14x + 8y =2 Et également avec R por teayimef ait ay =3 mport numpy as np >>> import numpy.linalg as al r y Copyright © Pragmathiques 2023, 89nee >>> Aenp.array(({1,6],[2,7]]) >>> print (A) (1 6) [2 p-array({(2],[3]}) >>> B array([[2], (31) >>> X: =al.solve(A,B) >o> x array({(0.8], (0.291) >>> print (x) [10.8] 0.21) >>> Renp.array({(14,8],[21,12]]) >>> print (R) [aa a1 [21 121) >>> Keal. solve (R,B) Traceback (most recent call last): File "
", line 1, in
1. solve (R,B) raise LinAlgError("Singular matrix") numpy.linalg.LinAlgError: Singular matrix (On voit que dans le cas oii R n'est pas inversible et donc que le systéme n’a pas de solution, ona un message erreur. Mais al-solve nest pas utile que pour le cas ou B est une matrice colonne. On peut aussi es quai Best une race carte da ne tale que A Gx, DG 3) Done on peut essayer al-solve ici. Copyright © Pragmathiques 2023, 2023-20242023-2024 Pregmathiques Remarque, on n’est pas obligé de rentrer au préalable la matrice, mais on peut le faire directement dans le al.solve, comme c'est le cas ici >> print (al. solve(A,np.array([[ tha 2.) [-.. -1.07 Mais pour cela, il faut que la matrice soit inversible ! Meme dans le cas ot il ya une solution, sila matrice n’est pas inversible, le alsolve ne fonctionne pas (probablement parce que la solution ne serait pas unique !). Voyons un exemple. Reprenons notrematice R. Ona 1M a).(1 1) (6 6 21 )*(4 “= 5) Et pourtant al solve nous donne : Ive (Rynp.array({ [6,6], [9,9]])) recent call last): "cpyshell#16>", line 1, in
-solve (Ry np.array([[6,6],(9,9]]}) ine 200, in solve File "<_array function internals>", numpy.linalg.LinAlgError: Singular matrix Résoudre un systéme avec I’inverse d’une matrice Eh oui, on peut tout simplement faire 'inverse de la matrice car AX = Ye» X = A"tY. On reprend les commandes vues dans le II] 5). Attention, pour le produit de matrices, on utilise np.doti) 1 >>> Kenp.dot (al. inv (A) ,B) >>> print (x) (0.8) 0.2 dot (al.matrix_power (A,-1),8) >>> print (x) 8 Copyright © Pragmathiques 2023, 91
Vous aimerez peut-être aussi
ECG1 Maths Approfondies Suivi Hebdomadaire
PDF
Pas encore d'évaluation
ECG1 Maths Approfondies Suivi Hebdomadaire
167 pages
2-Corrigé EXERCICES PRODUCTEUR 1 2 3
PDF
100% (2)
2-Corrigé EXERCICES PRODUCTEUR 1 2 3
4 pages
TD Macro L2 Dossier 2007-08
PDF
100% (1)
TD Macro L2 Dossier 2007-08
44 pages
Rapport de Projet Data Warehouse
PDF
Pas encore d'évaluation
Rapport de Projet Data Warehouse
24 pages
Exercices Excel Avec Corrige Formation V3
PDF
Pas encore d'évaluation
Exercices Excel Avec Corrige Formation V3
97 pages
Pfe DDDD
PDF
Pas encore d'évaluation
Pfe DDDD
49 pages
Deep Learning CNN
PDF
Pas encore d'évaluation
Deep Learning CNN
22 pages
Gestion Projet Big Data
PDF
Pas encore d'évaluation
Gestion Projet Big Data
28 pages
Créer Un Tableau D'amortissement de Prêt Sur Power BI
PDF
100% (1)
Créer Un Tableau D'amortissement de Prêt Sur Power BI
35 pages
Introduction À UML - Projet Informatique PDF
PDF
Pas encore d'évaluation
Introduction À UML - Projet Informatique PDF
93 pages
Cours ERP Supinfo Part 3 V1
PDF
Pas encore d'évaluation
Cours ERP Supinfo Part 3 V1
79 pages
TD Datamining AIAC 2024-2025
PDF
100% (2)
TD Datamining AIAC 2024-2025
14 pages
Curricula Master Informatique
PDF
Pas encore d'évaluation
Curricula Master Informatique
5 pages
Guide Du Gestionnaire Pour L'utilisation de PBI
PDF
Pas encore d'évaluation
Guide Du Gestionnaire Pour L'utilisation de PBI
58 pages
Diagramme D'activités
PDF
100% (1)
Diagramme D'activités
33 pages
Chapitre 3
PDF
Pas encore d'évaluation
Chapitre 3
84 pages
Triggers Et Vues Matérialisées (MySQL)
PDF
Pas encore d'évaluation
Triggers Et Vues Matérialisées (MySQL)
20 pages
Boukhrisse Hamza TP n2
PDF
100% (1)
Boukhrisse Hamza TP n2
36 pages
Cours Sécurité Système Informatique
PDF
Pas encore d'évaluation
Cours Sécurité Système Informatique
23 pages
FOZEU Aaron BD TP-PowerBI
PDF
Pas encore d'évaluation
FOZEU Aaron BD TP-PowerBI
13 pages
Sermoon V1-SM-001 - User Manual FR
PDF
100% (1)
Sermoon V1-SM-001 - User Manual FR
25 pages
Chapitre 2 Les Collections en Java List
PDF
Pas encore d'évaluation
Chapitre 2 Les Collections en Java List
14 pages
Poly TP
PDF
Pas encore d'évaluation
Poly TP
59 pages
Rapport Logiciel R
PDF
Pas encore d'évaluation
Rapport Logiciel R
21 pages
Poly MC Simu Va
PDF
Pas encore d'évaluation
Poly MC Simu Va
26 pages
Uml Ananlyse Et Conception - Partie2 - Lamim
PDF
Pas encore d'évaluation
Uml Ananlyse Et Conception - Partie2 - Lamim
44 pages
3 Proc Decision Markovien
PDF
Pas encore d'évaluation
3 Proc Decision Markovien
53 pages
Resume Du Cours - Partie III
PDF
Pas encore d'évaluation
Resume Du Cours - Partie III
33 pages
Informatique de Base
PDF
Pas encore d'évaluation
Informatique de Base
41 pages
Chapitre2 ECG2
PDF
Pas encore d'évaluation
Chapitre2 ECG2
24 pages
Chapitre5 - Decision Tree
PDF
100% (1)
Chapitre5 - Decision Tree
28 pages
TD01 - Suites Et Séries - Correction - 082812
PDF
Pas encore d'évaluation
TD01 - Suites Et Séries - Correction - 082812
23 pages
Methode de Conception Orientee Objet - 2012
PDF
Pas encore d'évaluation
Methode de Conception Orientee Objet - 2012
62 pages
Partie1 - Introduction To Web Engineering
PDF
Pas encore d'évaluation
Partie1 - Introduction To Web Engineering
32 pages
Poly Ch1 Logique - Raisonnements
PDF
Pas encore d'évaluation
Poly Ch1 Logique - Raisonnements
18 pages
KNIME
PDF
Pas encore d'évaluation
KNIME
20 pages
Sécurité Des Bases de Données - Les Bases - France - IBM
PDF
Pas encore d'évaluation
Sécurité Des Bases de Données - Les Bases - France - IBM
11 pages
Cours R
PDF
Pas encore d'évaluation
Cours R
10 pages
Les Systèmes D'Information Écisionnels: Youness OUBENAALLA
PDF
Pas encore d'évaluation
Les Systèmes D'Information Écisionnels: Youness OUBENAALLA
21 pages
Cours 5
PDF
Pas encore d'évaluation
Cours 5
33 pages
Cours Heritage
PDF
Pas encore d'évaluation
Cours Heritage
37 pages
Time Intelligence Functions
PDF
100% (1)
Time Intelligence Functions
7 pages
Presentasion Final RPA
PDF
Pas encore d'évaluation
Presentasion Final RPA
17 pages
TP3
PDF
100% (1)
TP3
21 pages
Tpe-Inf-356 Modifié OK
PDF
Pas encore d'évaluation
Tpe-Inf-356 Modifié OK
17 pages
SNT TP1 Python-Variables
PDF
Pas encore d'évaluation
SNT TP1 Python-Variables
4 pages
Sans Titre PDF
PDF
Pas encore d'évaluation
Sans Titre PDF
50 pages
Correction 1NSI Python Variables
PDF
Pas encore d'évaluation
Correction 1NSI Python Variables
6 pages
Les Matrices Avec Numpy - Python 2
PDF
Pas encore d'évaluation
Les Matrices Avec Numpy - Python 2
11 pages
Aide Memoire Python
PDF
Pas encore d'évaluation
Aide Memoire Python
7 pages
03 AL Système Decisionnel
PDF
Pas encore d'évaluation
03 AL Système Decisionnel
16 pages
Contraintes D'intégrité
PDF
Pas encore d'évaluation
Contraintes D'intégrité
11 pages
Morphologie Mathématique
PDF
Pas encore d'évaluation
Morphologie Mathématique
19 pages
Ecg2 TD10
PDF
Pas encore d'évaluation
Ecg2 TD10
4 pages
TP
PDF
Pas encore d'évaluation
TP
13 pages
Chapter 7 Neo4j (NoSql)
PDF
Pas encore d'évaluation
Chapter 7 Neo4j (NoSql)
17 pages
L'utilisation de Google Drive Et Ses Service
PDF
Pas encore d'évaluation
L'utilisation de Google Drive Et Ses Service
8 pages
01 Introduction
PDF
Pas encore d'évaluation
01 Introduction
20 pages
Tiny Os
PDF
Pas encore d'évaluation
Tiny Os
7 pages
TP Les Listes
PDF
Pas encore d'évaluation
TP Les Listes
4 pages
Examen BD Juin2005
PDF
Pas encore d'évaluation
Examen BD Juin2005
5 pages
Encg TP Access 2020
PDF
Pas encore d'évaluation
Encg TP Access 2020
3 pages
TP N°05: Développement Spécifique D'un ERP (Intégration)
PDF
Pas encore d'évaluation
TP N°05: Développement Spécifique D'un ERP (Intégration)
5 pages
Exempleds2010sp2 Corrige
PDF
Pas encore d'évaluation
Exempleds2010sp2 Corrige
2 pages
Master Spécialisé BIG DATA
PDF
Pas encore d'évaluation
Master Spécialisé BIG DATA
2 pages
Présentation1 OpenERP
PDF
Pas encore d'évaluation
Présentation1 OpenERP
16 pages
Programation
PDF
Pas encore d'évaluation
Programation
2 pages
TP Power Pivot CP 19
PDF
Pas encore d'évaluation
TP Power Pivot CP 19
1 page
MSSAS Formation Ms SQL Server Analysis Services PDF
PDF
Pas encore d'évaluation
MSSAS Formation Ms SQL Server Analysis Services PDF
2 pages