Fasc Programmation Python 2022
Fasc Programmation Python 2022
Programmation Python
Licence
MAMADOU Diarra
22/11/2022
Table des matières
1 Introduction à Python ..................................................................................................................... 5
1.1 Présentation de Python ........................................................................................................... 5
1.2 Installation et manipulation de Python ................................................................................... 5
1.2.1 Prise en main en mode interactif .................................................................................... 5
1.2.2 Ecrire, conserver, ouvrir, exécuter un programme ......................................................... 5
2 Présentation des outils de programmation .................................................................................... 7
2.1 Exécution d’un premier programme ....................................................................................... 7
2.2 Quelques bases rapides en Python ......................................................................................... 7
2.2.1 Utilisation en mode interactif ......................................................................................... 7
2.2.2 Premiers calculs ............................................................................................................... 8
2.2.3 L’opérateur /.................................................................................................................... 8
2.2.4 L’opérateur % .................................................................................................................. 8
2.2.5 Affectation ....................................................................................................................... 9
2.2.6 Affichage - la fonction print() ........................................................................................ 10
2.2.7 Fonction range() ............................................................................................................ 10
2.2.8 Accès aux éléments d’une liste ..................................................................................... 11
2.2.9 Fonction len() ................................................................................................................ 11
2.2.10 Lecture d’informations au clavier - la fonction input() ................................................. 11
2.2.11 Règles générales d’écriture ........................................................................................... 12
2.3 Tests (Instructions conditionnelles) ...................................................................................... 13
2.3.1 Bloc d’instructions - Indentation ................................................................................... 13
2.3.2 Instruction if .................................................................................................................. 13
2.3.3 Instruction if … else ....................................................................................................... 15
2.3.4 Opérateur logique and .................................................................................................. 17
2.3.5 Opérateur logique or ..................................................................................................... 17
2.4 Boucles .................................................................................................................................. 17
2.4.1 Boucles bornées et non bornées ................................................................................... 17
2.4.2 Boucle for ...................................................................................................................... 17
2.4.3 Boucle while .................................................................................................................. 19
2.4.4 Comment choisir entre boucle for et boucle while ....................................................... 20
2.4.5 Transformation d’une boucle for en une boucle while ................................................. 20
2.5 Les instructions break et continue, et la clause else dans les boucles.................................. 20
2.5.1 L’instruction break ........................................................................................................ 20
2.5.2 Remarque : équivalent du do…while (faire…tant que) ................................................ 21
2.5.3 Instruction continue ...................................................................................................... 22
2.5.4 Clause else dans une boucle.......................................................................................... 23
2.6 Principaux types de données................................................................................................. 23
2.6.1 La fonction type() .......................................................................................................... 24
2.6.2 Le type int (entier) ......................................................................................................... 24
2.6.3 Le type float (flottant) ................................................................................................... 24
2.6.4 Le type str (chaîne de caractères) ................................................................................. 25
2.6.5 Le type bool (booléen) .................................................................................................. 25
2.6.6 Le type list (liste)............................................................................................................ 26
2.6.7 Le type complex (complexe) ......................................................................................... 26
2.7 Tuples en Python ................................................................................................................... 27
2.8 Dictionnaires en Python ........................................................................................................ 30
2.8.1 Comment construire une entrée dans un dictionnaire ? .............................................. 30
2.8.2 Comment créer un dictionnaire ? ................................................................................. 31
2.8.3 Comment parcourir un dictionnaire ? ........................................................................... 31
2.9 istes........................................................................................................................................ 31
2.9.1 Définition ....................................................................................................................... 31
2.9.2 Utilisation .......................................................................................................................... 32
2.9.3 Opération sur les listes .................................................................................................. 32
2.9.4 Indiçage négatif ............................................................................................................. 33
2.9.5 Fonction len() ................................................................................................................ 34
2.9.6 Listes de listes¶ ............................................................................................................. 34
2.9.7 Minimum, maximum et somme d'une liste .................................................................. 35
2.10 Ensembles.............................................................................................................................. 36
3 Fonctions en Python ...................................................................................................................... 37
3.1 Définition d’une fonction - def .............................................................................................. 38
3.2 Fonction sans paramètre ....................................................................................................... 38
3.3 Fonction avec paramètre ...................................................................................................... 40
3.4 Utilisation d’une variable comme argument......................................................................... 40
3.5 Fonction avec plusieurs paramètres ..................................................................................... 41
3.6 Variables locales, variables globales ..................................................................................... 42
3.7 Utilisation d’une variable globale - global ............................................................................. 43
3.8 « Vraies » fonctions et procédures........................................................................................ 43
3.9 Valeurs par défaut pour les paramètres ............................................................................... 44
3.10 Arguments avec étiquettes ................................................................................................... 44
3.11 Utilisation des fonctions dans un script ................................................................................ 45
3.12 Modules et importations ....................................................................................................... 46
3.13 Package .................................................................................................................................. 48
4 Python et maths ............................................................................................................................ 50
4.1 Quelques bibliothèques ........................................................................................................ 50
4.2 Quelques fonctions mathématiques ..................................................................................... 51
4.3 Courbes.................................................................................................................................. 51
4.3.1 Utilisation de plot()........................................................................................................ 51
4.3.2 Définition du domaine des axes - xlim() et ylim().......................................................... 52
4.3.3 Ajout d’un titre - title() .................................................................................................. 53
4.3.4 Ajout d’une légende - legend() ...................................................................................... 54
4.3.5 Labels sur les axes - xlabel() et ylabel() ......................................................................... 54
4.3.6 Affichage de plusieurs courbes ..................................................................................... 55
4.3.7 Exemple avec un légende .............................................................................................. 56
4.3.8 Formats de courbes ....................................................................................................... 56
4.3.9 Style de ligne ................................................................................................................. 57
4.3.10 Symbole (« marker ») .................................................................................................... 58
4.3.11 Couleur .......................................................................................................................... 59
4.3.12 Largeur de ligne ............................................................................................................. 59
4.3.13 Tracé de formes ............................................................................................................. 60
4.3.14 L’instruction axis("equal") ............................................................................................. 60
4.3.15 Tracé d’un cercle ........................................................................................................... 62
4.3.16 Tracé de diagrammes en bâtons et histogrammes ....................................................... 63
4.3.17 Affichages de nuages de points ..................................................................................... 66
4.3.18 Tracé multiples .............................................................................................................. 68
4.3.19 Tutoriel sur mplot3d ...................................................................................................... 68
4.4 Tableaux et calcul matriciel ................................................................................................... 91
4.4.1 Tableaux - [Link]() ......................................................................................... 91
4.4.2 Tableaux bidimensionnels (2D) ..................................................................................... 92
4.4.3 La fonction [Link]() ............................................................................................... 92
4.4.4 La fonction [Link]() ............................................................................................ 92
4.4.5 Produit terme à terme................................................................................................... 92
4.4.6 Produit matriciel - [Link]()..................................................................................... 93
4.4.7 Transposé ...................................................................................................................... 93
4.4.8 Complexe conjugué - [Link]()............................................................................... 93
4.4.9 Transposé complexe conjugué ...................................................................................... 93
4.4.10 Tableaux et slicing ......................................................................................................... 94
4.4.11 Slicing des tableaux 2D .................................................................................................. 94
4.4.12 Tableaux de 0 - [Link]() ...................................................................................... 95
4.4.13 Tableaux de 1 - [Link]() ....................................................................................... 95
4.4.14 Matrice identité - [Link]() ..................................................................................... 95
4.4.15 Déterminant - [Link]().................................................................................. 95
4.4.16 Inverse - [Link]() ........................................................................................... 96
4.4.17 Résolution d’un système d’équations linéaires - [Link]() ......................... 96
4.4.18 Valeurs propres et vecteurs propres - [Link]() ............................................. 96
4.4.19 Changement de la taille d’un tableau ........................................................................... 97
4.4.20 Obtention d’un tableau 2D ligne ou colonne ................................................................ 97
5 Bibliographie.................................................................................................................................. 98
Programmation Python
1 Introduction à Python
1.1 Présentation de Python
Le langage de programmation Python a été créé en 1989 par Guido van Rossum, aux Pays-Bas.
Python présente de nombreuses caractéristiques :
Il est multiplateforme. C’est-à-dire qu’il fonctionne sur de nombreux systèmes d’exploitation
;
Il est gratuit. Vous pouvez l’installer sur autant d’ordinateurs que vous voulez (même sur votre
téléphone !) ;
C’est un langage de haut niveau. Il demande relativement peu de connaissance sur le
fonctionnement d’un ordinateur pour être utilisé ;
C’est un langage interprété. Un script Python n’a pas besoin d’être compilé pour être exécuté,
contrairement à des langages comme le C ou le C++ ;
Il est orienté objet.
Il est relativement simple à prendre en main.
il est très utilisé dans de nombreux domaines : bioinformatique, analyse de données, imagerie,
3D, web, réseau, matériels, etc.
une fenêtre d’enregistrement s’ouvre alors. Choisissez dans l’arborescence le dossier dans
lequel vous voulez enregistrer le programme, puis dans le champ d’enregistrement du fichier
saisissez le nom du programme suivi de l’extension .py, puis cliquez sur enregistrer :
Pour ouvrir un programme python, il suffira de sélectionner Open dans le menu File de
l’environnement IDLE puis de chercher dans vos dossiers le fichier python à ouvrir
Exécution du programme : Pour exécuter le programme, il suffit de sélectionner « Run Module
» dans le menu Run (si une modification du script a été effectuée, on vous proposera
d’enregistrer le script modifié avant de l’exécuter).
print("valeur :", i)
print("Fin")
valeur : 0
valeur : 1
valeur : 2
Fin
Dans Spyder, on dispose d’une zone de fenêtre pour l’interpréteur de commandes IPython.
Son invite de commande est différente de celle de l’interpréteur Python standard (qui
est >>>). Elle se présente de la façon suivante :
In [1]:
Exemple de première utilisation de IPython :
In [1]: 3 * 4
Out[1]: 12
In [2]: 5 + 2
Out[2]: 7
Les parties qui débutent par In et Out correspondent aux entrées et sorties respectivement.
>>> 4 + 5
>>> (6 + 3) * 2
>>> 5**2
2.2.3 L’opérateur /
En Python 3, il réalise une division décimale standard comme sur une calculatrice.
Exemple
>>> 7 / 2
3.5
>>> 7 // 2
2.2.4 L’opérateur %
L’opérateur % (appelé opérateur modulo) fournit le reste de la division entière d’un nombre
par un autre.
Exemple
>>> 7 % 2
>>> 6 % 2
2.2.5 Affectation
>>> a = 2
>>> a
>>> b = a + 3
>>> b
a=7 // affectation
b=2 // affectation
print("la division entière de", a, "par", b, "est : ", a//b) // division entière
>>> print("bonjour")
bonjour
>>> a = 5
>>> print(a)
Il est possible de réaliser plusieurs affichages à la suite. Pour cela, on sépare les éléments par
des virgules.
>>> a = 5
a vaut 5
>>> range(10)
range(0, 10)
En Python 3, si on souhaite afficher les valeurs, il est nécessaire de convertir le résultat en liste
grâce à la fonction list(). Par exemple :
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Le nombre de fin qui lui est passé n’est jamais dans la liste générée. Par exemple, range(10)
génère 10 valeurs, exactement les indices des éléments d’une séquence de longueur 10. Il est
possible de faire commencer l’intervalle à un autre nombre, ou de spécifier un incrément
différent (même négatif) :
[5, 6, 7, 8, 9]
De manière générale, on a :
Le pas peut être positif ou négatif. La valeur de la borne de fin (maximale ou minimale) n’est
jamais atteinte.
Exercice
>>> a = list(range(1,10,2))
>>> a
[1, 3, 5, 7, 9]
>>> a[0]
>>> a[2]
Pour accéder à un élément d’une liste, on indique entre crochets [] l’indice de l’élément.
Avertissement
En Python, l’indice du premier élément d’une liste est 0.
>>> a = list(range(7,10))
>>> a
[7, 8, 9]
>>> len(a)
Par défaut, la fonction input() renvoie une chaîne de caractères. Il faut donc utiliser la
fonction int() qui permet d’obtenir un entier.
Autre exemple de programme
n=3
for i in range(n):
if x > 0:
else:
print("Fin")
for i in range(n):
bloc d'instructions
if x > 0:
else:
Les mots réservés par le langage Python (if, for, etc.) ne peuvent pas être utilisés comme
identificateurs.
Les commentaires
2.3.2 Instruction if
Syntaxe
if condition:
Instruction A
condition est une expression booléenne, c’est-à-dire une expression qui prend pour
valeur True (Vrai) ou False (Faux).
L”instruction A n’est exécutée que si la condition est vérifiée (c’est-à-dire si elle prend pour
valeur True).
x = 15
if x > 10:
print("Fin")
Fin
x=3
if x > 10:
print "Fin"
Fin
x=5
if x > 0:
Dans cet exemple, le bloc après le if contient deux instructions. L’instruction print("Fin") ne
fait pas partie du bloc car elle n’est pas indentée.
Fin
x = -2
if x > 0:
print("Fin")
Fin
Syntaxe
if condition:
Instruction A
else:
Instruction B
x=5
if x > 0:
else:
print("Fin")
Fin
x = -2
if x > 0:
else:
print("Fin")
Fin
Opérateur Signification
x == y x est égal à y
x != y x est différent de y
>>> 3 < 4
True
>>> 3 > 4
False
True
False
True
True
2.4 Boucles
Les boucles s’utilisent pour répéter plusieurs fois l’exécution d’une partie du programme.
En général, quand on sait combien de fois doit avoir lieu la répétition, on utilise une boucle for.
i a pour valeur 0
i a pour valeur 1
i a pour valeur 2
i a pour valeur 3
L’instruction for est une instruction composée, c’est-à-dire une instruction dont l’en-tête se
termine par deux-points :, suivie d’un bloc indenté qui constitue le corps de la boucle.
On dit que l’on réalise une itération de la boucle à chaque fois que le corps de la boucle est
exécuté.
Dans l’en-tête de la boucle, on précise après le mot-clé for le nom d’une variable (i dans
l’exemple ci-dessus) qui prendra successivement toutes les valeurs qui sont données après le
mot-clé in. On dit souvent que cette variable (ici i) est un compteur car elle sert à numéroter
les itérations de la boucle.
Il est possible d’obtenir le même résultat sans donner la liste des valeurs, mais en utilisant la
fontion range().
for i in range(4):
Pour parcourir les indices d’une liste, il est possible de combiner range() et len() comme ci-
dessous :
for i in range(len(c)):
>>> len(c)
Dans l’exemple suivant, nous allons illustrer que la variable indiquée après for parcourt toutes
les valeurs de la liste donnée après in :
for i in c:
print("i vaut", i)
>>>
i vaut Marc
i vaut est
i vaut dans
i vaut le
i vaut jardin
while condition:
Instruction A
Exemple de programme :
x=1
print("Fin")
x a pour valeur 1
x a pour valeur 2
x a pour valeur 4
x a pour valeur 8
Fin
Le corps de la boucle (c’est-à-dire le bloc d’instructions indentées) sera répété tant que
la condition est vraie.
Dans l’exemple ci-dessus, x sera multiplié par 2 tant que sa valeur reste inférieure à 10.
Remarque : Il est toujours possible de remplacer une boucle for par une boucle while.
for i in range(4):
i=0
while i < 4:
i=i+1
2.5 Les instructions break et continue, et la clause else dans les boucles
Exemple
for i in range(10):
print("debut iteration", i)
print("bonjour")
if i == 2:
break
print("fin iteration", i)
print("apres la boucle")
debut iteration 0
bonjour
fin iteration 0
debut iteration 1
bonjour
fin iteration 1
debut iteration 2
bonjour
apres la boucle
Remarque : Dans le cas de boucles imbriquées, l’instruction break ne fait sortir que de la
boucle la plus interne.
Dans de nombreux langages, il existe une instruction do…while qui permet de créer une
boucle pour laquelle on ne connaît pas à l’avance le nombre de répétition, mais qui doit
s’exécuter au moins une fois. Cette instruction n’existe pas en Python, mais on peut facilement
reproduire son fonctionnement de la façon suivante :
while True:
n = int(input("donnez un entier > 0 : "))
if n > 0:
break
print("reponse correcte")
L’instruction continue permet de passer prématurément au tour de boucle suivant. Elle fait
continuer sur la prochaine itération de la boucle.
Exemple
for i in range(4):
print("debut iteration", i)
print("bonjour")
if i < 2:
continue
print("fin iteration", i)
print("apres la boucle")
debut iteration 0
bonjour
debut iteration 1
bonjour
debut iteration 2
bonjour
fin iteration 2
debut iteration 3
bonjour
fin iteration 3
apres la boucle
La clause else dans une boucle permet de définir un bloc d’instructions qui sera exécuté à la
fin seulement si la boucle s’est déroulée complétement sans être interrompue par un break.
Contrairement aux instructions présentes après la boucle, qui s’exécutent dans tous les cas
(avec ou sans interruption par un break), le bloc d’instructions défini dans la clause else ne
s’exécutera pas lors de l’interruption par un break. Après l’interruption, on passera
directement aux instructions après la boucle.
Autrement dit, le bloc de la clause else est exécuté lorsque la boucle se termine par
épuisement de la liste (avec for) ou quand la condition devient fausse (avec while), mais pas
quand la boucle est interrompue par un break. Ceci est illustré dans la boucle suivante, qui
recherche des nombres premiers :
if n % x == 0:
break
else:
4 egale 2 * 2.0
6 egale 2 * 3.0
Exemples :
>>> type(15)
int
>>> a = 15
>>> type(a)
int
>>> a = "toto"
>>> type(a)
str
>>> type(128)
int
Exemples :
>>> a = 14.5
>>> type(a)
float
>>> a = 11.
>>> type(a)
float
>>> a
11.0
>>> a = 3.25e7
>>> type(a)
float
>>> a
3.25e+7
>>> a = 'Bonjour'
>>> type(a)
str
>>> b = "Bonsoir"
>>> type(b)
str
>>> a = True
>>> type(a)
bool
>>> b = not(a)
>>> b
False
Remarque : la fonction not est un opérateur logique qui renvoie l’opposé de la valeur
booléenne transmise. Pour True, on obtient False. Réciproquement, il renvoie False quand on
lui transmet True.
2.6.6 Le type list (liste)
Sous Python, on peut définir une liste comme une collection d’éléments séparés par des
virgules, l’ensemble étant enfermé dans des crochets.
Exemple :
>>> type(jour)
list
>>> jour
Exemples :
>>> a = 2 + 3j
>>> type(a)
complex
>>> a
(2+3j)
>>> b = 1 + j
b=1+j
>>> b = 1 + 1j
>>> a * b
(-1+5j)
>>> 1j**2
(-1+0j)
Un exemple de type construit est le tuple. Il permet de créer une collection ordonnée de
plusieurs éléments. En mathématiques, on parle de p-uplet. Par exemple, un quadruplet est
constitué de 4 éléments.
Les tuples ressemblent aux listes, mais on ne peut pas les modifier une fois qu’ils ont été créés.
>>> a = (3, 4, 7)
>>> type(a)
<class 'tuple'>
Parfois, les tuples ne sont pas entourés de parenthèses, même s’il s’agit quand même de
tuples.
>>> b, c = 5, 6
>>> b
>>> c
Cette syntaxe avec plusieurs variables à gauche du signe = peut aussi être utilisée avec une
variable unique à droite si celle-ci contient un tuple.
>>> a = (3, 4)
>>> u, v = a
>>> u
2
>>> v
Il est très facile de créer une fonction qui renvoie un tuple. Il suffit d’indiquer ce tuple
après return.
def test():
return 3, 4
>>> a = test()
>>> a
(3, 4)
>>> b, c = test()
>>> b
>>> c
Remarque : Après return, il aurait été possible d’utiliser une notation avec des parenthèses
pour le tuple, par exemple return (3, 4).
Comment itérer sur les éléments d’un tuple ?
Comme une liste, il est possible de parcourir un tuple avec une boucle for.
for i in a:
print(i)
Résultat
La valeur d’un élément du tuple est obtenue en utilisant la même syntaxe que pour une liste.
>>> a[0]
3
>>> a[1]
>>> a = (3)
>>> a
>>> type(a)
int
En effet, les parenthèses sont alors considérées comme celles d’une expression
mathématique, comme par exemple dans 3*(4+1).
Pour créer un tuple contenant un seul élément, il faut donc utiliser une syntaxe spécifique qui
contient une virgule.
>>> b = (3,)
>>> b
(3,)
>>> type(b)
<class 'tuple'>
Si on veut récupérer l’unique valeur présente dans le tuple, on va pouvoir utiliser les
approches suivantes :
Première approche
>>> c = b[0]
>>> c
Deuxième approche
>>> d, = b
>>> d
La deuxième approche avec une virgule d, = b est plus légère que la syntaxe qui utilise des
crochets c = b[0].
Il est possible d’utiliser la syntaxe nom_de_variable, = aussi avec une liste à un élément.
>>> u = [5]
>>> v, = u
>>> v
Les éléments d’une liste ou d’un tuple sont ordonnés et on accède à un élément grâce à sa
position en utilisant un numéro qu’on appelle l’indice de l’élément.
Un dictionnaire en Python va aussi permettre de rassembler des éléments mais ceux-ci seront
identifiés par une clé.
Contrairement aux listes qui sont délimitées par des crochets, on utilise des accolades pour
les dictionnaires.
[1]: mon_dictionnaire = {"voiture": "véhicule à quatre roues", "vélo": "véhicule à deux roues
"}
Un élément a été défini ci-dessus dans le dictionnaire en précisant une clé au moyen d’une
chaîne de caractères suivie de : puis de la valeur associée
clé: valeur
On accède à une valeur du dictionnaire en utilisant la clé entourée par des crochets avec la
syntaxe suivante :
[2]: mon_dictionnaire["voiture"]
2.8.1 Comment construire une entrée dans un dictionnaire ?
Il est très facile d’ajouter un élément à un dictionnaire. Il suffit d’affecter une valeur pour la
nouvelle clé.
[3]: mon_dictionnaire["tricycle"] = "véhicule à trois roues"
[4]: mon_dictionnaire
Le type d’un dictionnaire est dict.
[5]: type(mon_dictionnaire)
Il est aussi possible d’utiliser des valeurs d’autres types.
[9]: nombre_de_pneus = {}
nombre_de_pneus["voiture"] = 4
nombre_de_pneus["vélo"] = 2
[10]: nombre_de_pneus
2.8.3 Comment parcourir un dictionnaire ?
On utilise items().
2.9 Listes
2.9.1 Définition
Une liste est une structure de données qui contient une série de valeurs. Python autorise la
construction de liste contenant des valeurs de types différents (par exemple entier et chaîne
de caractères), ce qui leur confère une grande flexibilité. Une liste est déclarée par une série
de valeurs (n'oubliez pas les guillemets, simples ou doubles, s'il s'agit de chaînes de caractères)
séparées par des virgules, et le tout encadré par des crochets. En voici quelques exemples :
>>> animaux = ["girafe", "tigre", "singe", "souris"]
>>> tailles = [5, 2.5, 1.75, 0.15]
>>> mixte = ["girafe", 5, "souris", 0.15]
>>> animaux
['girafe', 'tigre', 'singe', 'souris']
>>> tailles
[5, 2.5, 1.75, 0.15]
>>> mixte
['girafe', 5, 'souris', 0.15]
Lorsque l'on affiche une liste, Python la restitue telle qu'elle a été saisie.
2.9.2 Utilisation
Un des gros avantages d'une liste est que vous pouvez appeler ses éléments par leur position.
Ce numéro est appelé indice (ou index) de la liste.
liste : ["girafe", "tigre", "singe", "souris"]
indice : 0 1 2 3
Soyez très attentif au fait que les indices d'une liste de n éléments commencent à 0 et se
terminent à n-1. Voyez l'exemple suivant :
>>> animaux = ["girafe", "tigre", "singe", "souris"]
>>> animaux[0]
'girafe'
>>> animaux[1]
'tigre'
>>> animaux[3]
'souris'
2.9.3 Opération sur les listes
Tout comme les chaînes de caractères, les listes supportent l'opérateur + de concaténation,
ainsi que l'opérateur * pour la duplication :
>>> ani1 = ["girafe", "tigre"]
>>> ani2 = ["singe", "souris"]
>>> ani1 + ani2
['girafe', 'tigre', 'singe', 'souris']
>>> ani1 * 3
['girafe', 'tigre', 'girafe', 'tigre', 'girafe', 'tigre']
L'opérateur + est très pratique pour concaténer deux listes.
Vous pouvez aussi utiliser la méthode .append() lorsque vous souhaitez ajouter un seul
élément à la fin d'une liste.
Dans l'exemple suivant nous allons créer une liste vide :
>>> a = []
>>> a
[]
puis lui ajouter deux éléments, l'un après l'autre, d'abord avec la concaténation :
>>> a = a + [15]
>>> a
[15]
>>> a = a + [-5]
>>> a
[15, -5]
puis avec la méthode .append() :
>>> [Link](13)
>>> a
[15, -5, 13]
>>> [Link](-3)
>>> a
[15, -5, 13, -3]
Dans l'exemple ci-dessus, nous ajoutons des éléments à une liste en utilisant l'opérateur de
concaténation + ou la méthode .append(). Nous vous conseillons dans ce cas précis d'utiliser
la méthode .append() dont la syntaxe est plus élégante.
2.9.4 Indiçage négatif
La liste peut également être indexée avec des nombres négatifs selon le modèle suivant :
liste : ["girafe", "tigre", "singe", "souris"]
indice positif : 0 1 2 3
indice négatif : -4 -3 -2 -1
ou encore :
liste : ["A", "B", "C", "D", "E", "F"]
indice positif : 0 1 2 3 4 5
indice négatif : -6 -5 -4 -3 -2 -1
Les indices négatifs reviennent à compter à partir de la fin. Leur principal avantage est que
vous pouvez accéder au dernier élément d'une liste à l'aide de l'indice -1 sans pour autant
connaître la longueur de cette liste. L'avant-dernier élément a lui l'indice -2, l'avant-avant
dernier l'indice -3, etc.
>>> animaux = ["girafe", "tigre", "singe", "souris"]
>>> animaux[-1]
'souris'
>>> animaux[-2]
'singe'
Pour accéder au premier élément de la liste avec un indice négatif, il faut par contre connaître
le bon indice :
>>> animaux[-4]
'girafe'
Dans ce cas, on utilise plutôt animaux[0].
2.9.5 Fonction len()
L'instruction len() vous permet de connaître la longueur d'une liste, c'est-à-dire le nombre
d'éléments que contient la liste. Voici un exemple d'utilisation :
>>> animaux = ["girafe", "tigre", "singe", "souris"]
>>> len(animaux)
4
2.9.6 Listes de listes
Pour finir, sachez qu'il est tout à fait possible de construire des listes de listes. Cette
fonctionnalité peut parfois être très pratique. Par exemple :
>>> enclos1 = ["girafe", 4]
>>> enclos2 = ["tigre", 2]
>>> enclos3 = ["singe", 5]
>>> zoo = [enclos1, enclos2, enclos3]
>>> zoo
[['girafe', 4], ['tigre', 2], ['singe', 5]]
Dans cet exemple, chaque sous-liste contient une catégorie d'animal et le nombre d'animaux
pour chaque catégorie.
Pour accéder à un élément de la liste, on utilise l'indiçage habituel :
>>> zoo[1]
['tigre', 2]
Pour accéder à un élément de la sous-liste, on utilise un double indiçage :
>>> zoo[1][0]
'tigre'
>>> zoo[1][1]
2
2.9.7 Minimum, maximum et somme d'une liste
Les fonctions min(), max() et sum() renvoient respectivement le minimum, le maximum et la
somme d'une liste passée en argument.
>>> liste = list(range(10))
>>> liste
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> sum(liste)
45
>>> min(liste)
0
>>> max(liste)
9
Même si en théorie ces fonctions peuvent prendre en argument une liste de strings, on les
utilisera la plupart du temps avec des types numériques (liste d'entiers et / ou de floats).
Nous avions déjà croisé min(), max() dans le chapitre 2 Variables. On avait vu que ces deux
fonctions pouvaient prendre plusieurs arguments entiers et / ou floats, par exemple :
>>> min(3, 4)
3
L'exemple suivant utilise la plupart des méthodes des listes :
2.10 Ensembles
Python fournit également un type de donnée pour les ensembles. Un ensemble est une
collection non ordonnée sans éléments en double. Un ensemble permet de réaliser des tests
d'appartenance ou des suppressions de doublons de manière simple. Les ensembles savent
également effectuer les opérations mathématiques telles que les unions, intersections,
différences et différences symétriques.
On crée des ensembles en appelant avec des accolades ou avec la fonction set(). Notez
que {} ne crée pas un ensemble vide, mais un dictionnaire (une structure de données dont
nous allons parler dans la séquence suivante) vide ; utilisez set() pour ce cas.
Voici une brève démonstration :
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket) # show that duplicates have been removed
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket # fast membership testing
True
>>> 'crabgrass' in basket
False
>>> # Demonstrate set operations on unique letters from two words
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a # unique letters in a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # letters in a but not in b
{'r', 'd', 'b'}
>>> a | b # letters in a or b or both
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # letters in both a and b
{'a', 'c'}
>>> a ^ b # letters in a or b but not both
{'r', 'd', 'b', 'm', 'z', 'l'}
Tout comme pour les listes en compréhension, il est possible d'écrire des ensembles en
compréhension :
{'r', 'd'}
3 Fonctions en Python
Nous avons déjà rencontré diverses fonctions prédéfinies : print(), input(), range(), len().
Lorsqu’une tâche doit être réalisée plusieurs fois par un programme avec seulement des
paramètres différents, on peut l’isoler au sein d’une fonction.
3.1 Définition d’une fonction - def
Syntaxe
bloc d'instructions
Vous pouvez choisir n’importe quel nom pour la fonction que vous créez, à l’exception des
mots-clés réservés du langage, et à la condition de n’utiliser aucun caractère spécial ou
accentué (le caractère souligné « _ » est permis). Comme c’est le cas pour les noms de
variables, on utilise par convention des minuscules, notamment au début du nom (les noms
commençant par une majuscule seront réservés aux classes).
Corps de la fonction
Comme les instructions if, for et while, l’instruction def est une instruction composée. La
ligne contenant cette instruction se termine obligatoirement par un deux-points :, qui
introduisent un bloc d’instructions qui est précisé grâce à l’indentation. Ce bloc d’instructions
constitue le corps de la fonction.
def compteur3():
i=0
while i < 3:
print(i)
i=i+1
print("bonjour")
compteur3()
compteur3()
bonjour
1
2
En entrant ces quelques lignes, nous avons défini une fonction très simple qui compte jusqu’à
2. Notez bien les parenthèses, les deux-points, et l’indentation du bloc d’instructions qui suit
la ligne d’en-tête (c’est ce bloc d’instructions qui constitue le corps de la fonction proprement
dite).
>>> compteur3()
provoque l’affichage de :
Nous pouvons maintenant réutiliser cette fonction à plusieurs reprises, autant de fois que
nous le souhaitons.
def compteur3():
i=0
while i < 3:
print(i)
i=i+1
def double_compteur3():
compteur3()
compteur3()
print("bonjour")
double_compteur3()
Une première fonction peut donc appeler une deuxième fonction, qui elle-même en appelle
une troisième, etc.
Une fonction est donc en quelque sorte une nouvelle instruction personnalisée, qu’il est
possible d’ajouter librement à notre langage de programmation.
def compteur(stop):
i=0
print(i)
i=i+1
compteur(4)
compteur(2)
Pour tester cette nouvelle fonction, il nous suffit de l’appeler avec un argument.
Exemple
def compteur(stop):
i=0
print(i)
i=i+1
a=5
compteur(a)
Avertissement
Dans l’exemple ci-dessus, l’argument que nous passons à la fonction compteur() est le
contenu de la variable a. A l’intérieur de la fonction, cet argument est affecté au
paramètre stop, qui est une tout autre variable.
Notez donc bien dès à présent que :
• Le nom d’une variable que nous passons comme argument n’a rien à voir avec le nom
du paramètre correspondant dans la fonction.
• Ces noms peuvent être identiques si vous le voulez, mais vous devez bien comprendre
qu’ils ne désignent pas la même chose (en dépit du fait qu’ils puissent contenir une
valeur identique).
La fonction suivante utilise trois paramètres : start qui contient la valeur de départ, stop la
borne supérieure exclue comme dans l’exemple précédent et step le pas du compteur.
i = start
i = i + step
compteur_complet(1, 7, 2)
A chaque fois que nous définissons des variables à l’intérieur du corps d’une fonction, ces
variables ne sont accessibles qu’à la fonction elle-même. On dit que ces variables sont
des variables locales à la fonction. Une variable locale peut avoir le même nom qu’une
variable de l’espace de noms global mais elle reste néanmoins indépendante.
Les contenus des variables locales sont stockés dans l’espace de noms local qui est inaccessible
depuis l’extérieur de la fonction.
Les variables définies à l’extérieur d’une fonction sont des variables globales. Leur contenu est
« visible » de l’intérieur d’une fonction, mais la fonction ne peut pas le modifier.
Exemple
def test():
b=5
print(a, b)
a=2
b=7
test()
print(a, b)
25
27
def test():
global b
b=5
print(a, b)
a=2
b=7
test()
print(a, b)
25
25
def cube(w):
return w**3
>>> cube(3)
27
>>> a = cube(4)
>>> a
64
Exemples :
>>> politesse("Dupont")
Lorsque l’on appelle cette fonction en ne lui fournissant que le premier argument, le second
reçoit tout de même une valeur par défaut. Si l’on fournit les deux arguments, la valeur par
défaut pour le deuxième est tout simplement ignorée.
Python autorise cependant une souplesse beaucoup plus grande. Si les paramètres annoncés
dans la définition de la fonction ont reçu chacun une valeur par défaut, sous la forme déjà
décrite ci-dessus, on peut faire appel à la fonction en fournissant les arguments
correspondants dans n’importe quel ordre, à la condition de désigner nommément les
paramètres correspondants.
Exemple :
>>> oiseau()
V=43πR3V=43πR3
Exemple :
import numpy as np
def cube(n):
return n**3
def volume_sphere(r):
#programme principal
Notez bien que les deux parties du programme ont été disposées dans un certain ordre :
En fait, le corps principal d’un programme Python constitue lui-même une entité un peu
particulière, qui est toujours reconnue dans le fonctionnement interne de l’interpréteur sous
le nom réservé __main__ (le mot « main » signifie « principal », en anglais.
Très souvent, c’est une personne qui définit une fonction et une autre qui l’utilise. Par
exemple, avec la bibliothèque matplotlib, on peut utiliser la fonction plot() pour tracer des
courbes sans avoir à écrire nous-mêmes cette fonction.
Par exemple, nous allons créer un fichier nommé [Link] qui va définir 2 fonctions
: carre() et cube(). Un tel fichier est appelé un module et il va pouvoir être importé dans un
autre fichier, et en particulier dans le fichier qui contient le programme principal.
def carre(valeur):
resultat = valeur**2
return resultat
def cube(valeur):
resultat = valeur**3
return resultat
Il est maintenant possible d’utiliser dans un programme principal les fonctions qui ont été
définies dans le module [Link]. Pour cela, il faut importer les fonctions à partir du
module.
a=5
u = carre(a)
Avertissement
Le fichier [Link] doit être dans le même répertoire que le programme principal (ou bien
se trouver dans le « path » de Python).
a=5
u = carre(a)
v = cube(a)
a=5
u = carre(a)
v = cube(a)
Avertissement
L’importation de toutes les fonctions avec * est fortement déconseillée. En effet, elle ne
permet pas d’avoir une vision claire des fonctions qui ont été importées. Ceci est donc une
source potentielle d’erreurs.
import puissance
a=5
u = [Link](a)
import puissance as pu
a=5
u = [Link](a)
v = [Link](a)
Il est aussi possible de donner un alias à une fonction comme dans l’exemple suivant :
a=5
u = ca(a)
3.13 Package
Quand on a un grand nombre de modules, il peut être intéressant de les organiser dans des
dossiers. Un dossier qui rassemble des modules est appelé un package (paquetage en
français). Le nom du package est le même que celui du dossier. Par exemple, on crée un
dossier package1 dans lequel on place le fichier [Link] suivant :
def fonction1(a):
return a**2
import package1.module1
u = package1.module1.fonction1(3)
print("u vaut", u)
Remarque : Il est aussi possible d’avoir des dossiers imbriqués, c’est-à-dire des dossiers qui
contiennent d’autres dossiers.
Complément
A l’intérieur d’un module, le nom du module (en tant que chaîne de caractères) peut être
obtenu grâce à la variable globale __name__. Par exemple, si on utilise le
module [Link] défini précédemment, on a dans l’interpréteur :
>>> puissance.__name__
'puissance'
Un même fichier .py peut jouer le rôle de script ou de module suivant son utilisation.
Quand on utilise un fichier en tant que script, la variable globale __name__ prend pour
valeur '__main__'. Ceci permet d’avoir dans le fichier un bloc d’instructions qui sera exécuté
uniquement lorsque le fichier est lancé en tant que script.
def carre(valeur):
resultat = valeur**2
return resultat
if __name__ == "__main__":
a=3
On peut lancer une exécution directe en tant que script et on obtient alors :
le carre vaut 9
Ou bien on peut importer puissance2 en tant que module, par exemple dans le fichier suivant
:
le carre vaut 16
4 Python et mathématiques
4.1 Quelques bibliothèques
Numpy, Scipy et Matplotlib
Numpy : Un package incontournable pour commencer à faire du calcul scientifique sous Python
Matplotlib : le package permettant de faire des visualisations 2D (mais pas que ...) de très haute
qualité, facilement et avec de très bonnes performances.
Normalement, si un module approprié est déjà installé, l’installer à nouveau n’aura aucun
effet. La mise à jour de modules existants doit être demandée explicitement :
Installation de numpy
Installation de matplotlib
Installation de scipy
il suffit de faire :
Exemple 1
»
Exemple 2
Dans cet exemple, nous allons tracer la fonction cosinus.
xlim(xmin, xmax)
ylim(ymin, ymax)
Exemple 1
Syntaxe « PyLab » Syntaxe « standard »
Avertissement
Pour faire afficher le label, il ne faut pas oublier de faire appel à l’instruction legend().
4.3.5 Labels sur les axes - xlabel() et ylabel()
Des labels sur les axes peuvent être ajoutés avec les fonctions xlabel() et ylabel().
Syntaxe « PyLab » Syntaxe « standard »
Chaîne Effet
- ligne continue
-- tirets
: ligne en pointillé
-. tirets points
Avertissement
Si on ne veut pas faire apparaître de ligne, il suffit d’indiquer un symbole sans préciser un style
de ligne.
Exemple
Chaîne Effet
. point marker
, pixel marker
o circle marker
v triangle_down marker
^ triangle_up marker
< triangle_left marker
> triangle_right marker
1 tri_down marker
2 tri_up marker
3 tri_left marker
4 tri_right marker
s square marker
p pentagon marker
Chaîne Effet
* star marker
h hexagon1 marker
H hexagon2 marker
+ plus marker
x x marker
D diamond marker
d thin_diamond marker
| vline marker
_ hline marker
4.3.11 Couleur
Les chaînes de caractères suivantes permettent de définir la couleur :
g green vert
r red rouge
c cyan cyan
m magenta magenta
y yellow jaune
k black noir
w white blanc
Diagramme en bâtons
import [Link] as plt
import numpy as np
x = [3, 5, 6, 7]
y = [4, 1, 3, 4]
[Link](x,y)
[Link]()
import [Link] as
plt
names = ['group_a',
'group_b', 'group_c']
values = [1, 10, 100]
[Link](figsize=(9, 3))
[Link](131)
[Link](names, values)
[Link](132)
[Link](names, values)
[Link](133)
[Link](names, values)
[Link]('Categorical
Plotting')
[Link]()
Bar Chart
Pie-chart
import [Link] as
plt
import numpy as np
liste
=[randint(1,6)+randint(1,6)
for _ in range(1000)]
[Link](liste,11)
[Link]()
import
[Link] as
plt
import numpy as np
x = [ 1, 3, 2, 1]
y = [ 2, 3, 1, 3]
[Link](x,y)
[Link]()
Il peut être intéressant de modifier la couleur selon que les coordonnées vérifient une
condition ou pas. Pour cela, on peut fournir en plus une liste de couleur pour chaque point
avec l'argument c= liste_couleurs. On peut modifier la taille des points avec l'argument s=.
Voici un nuage de 5000 points pris au hasard. On a coloré en rouge ceux qui vérifient la
condition y<x².
Nuage de points
import [Link] as plt
import numpy as np
def donner_couleur(x,y):
couleurs=[]
for i in range(len(x)):
if y[i]<x[i]**2 :
[Link]("r")
else : [Link]("b")
return couleurs
[Link](x,y,s=1,c=donner_couleur(x,y
))
[Link]()
Representation en 3D
Dans sa nouvelle version 1.0.0: cette approche est préférable pour créer des courbes en 3D
axes.
Note
Avant la version 1.0.0, la méthode de création des axes 3D était différente. Pour ceux qui
utilisent des versions plus anciennes de matplotlib, changez
ax = fig.add_subplot(111, projection='3d') en ax = Axes3D(fig).
Line plots
Argument Description
zs z value(s), either one for all points or one for each point.
zdir Which direction to use as z (‘x’, ‘y’ or ‘z’) when plotting a 2D set.
import numpy as np
[Link]['[Link]'] = 10
fig = [Link]()
ax = [Link](projection='3d')
z = [Link](-2, 2, 100)
r = z**2 + 1
x = r * [Link](theta)
y = r * [Link](theta)
[Link]()
[Link]()
Scatter plots
Argument Description
zdir Which direction to use as z (‘x’, ‘y’ or ‘z’) when plotting a 2D set.
Returns a Patch3DCollection
'''
==============
3D scatterplot
==============
'''
import numpy as np
'''
'''
fig = [Link]()
ax = fig.add_subplot(111, projection='3d')
n = 100
# For each set of style and range settings, plot n random points in the box
# defined by x in [23, 32], y in [0, 100], z in [zlow, zhigh].
for c, m, zlow, zhigh in [('r', 'o', -50, -25), ('b', '^', -30, -5)]:
ys = randrange(n, 0, 100)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
[Link]()
Wireframe plots
The rstride and cstride kwargs set the stride used to sample the input data to
generate the graph. If either is 0 the input data in not sampled along this direction
producing a 3D line plot rather than a wireframe plot. The stride arguments are
only used by default if in the ‘classic’ mode. They are now superseded
by rcount and ccount. Will raise ValueError if both stride and count are used.
` The rcount and ccount kwargs supersedes rstride and
cstride for default sampling method for wireframe plotting. These arguments will
determine at most how many evenly spaced samples will be taken from the input data
to generate the graph. This is the default sampling method unless using the ‘classic’
style. Will raise ValueError if both stride and count are specified. If either is zero, then
the input data is not sampled along this direction, producing a 3D line plot rather than
a wireframe plot. Added in v2.0.0.
Argument Description
Returns a Line3DCollection
''' =================
3D wireframe plot
=================
'''
fig = [Link]()
ax = fig.add_subplot(111, projection='3d')
X, Y, Z = axes3d.get_test_data(0.05)
[Link]()
Surface plots
Argument Description
''' ======================
======================
Also demonstrates using the LinearLocator and custom formatting for the
'''
import numpy as np
fig = [Link]()
ax = [Link](projection='3d')
# Make data.
X = [Link](-5, 5, 0.25)
Y = [Link](-5, 5, 0.25)
X, Y = [Link](X, Y)
R = [Link](X**2 + Y**2)
Z = [Link](R)
linewidth=0, antialiased=False)
ax.set_zlim(-1.01, 1.01)
[Link].set_major_locator(LinearLocator(10))
[Link].set_major_formatter(FormatStrFormatter('%.02f'))
[Link]()
''' ========================
========================
'''
import numpy as np
fig = [Link]()
ax = fig.add_subplot(111,
projection='3d')
# Make data
x = 10 * [Link]([Link](u),
[Link](v))
y = 10 * [Link]([Link](u), [Link](v))
z = 10 * [Link]([Link]([Link](u)),
[Link](v))
ax.plot_surface(x, y, z, color='b')
[Link]()
''' =========================
3D surface (checkerboard)
=========================
'''
import numpy as np
fig = [Link]()
ax = [Link](projection='3d')
# Make data.
X = [Link](-5, 5, 0.25)
xlen = len(X)
Y = [Link](-5, 5, 0.25)
ylen = len(Y)
X, Y = [Link](X, Y)
R = [Link](X**2 + Y**2)
Z = [Link](R)
# Create an empty array of strings with the same shape as the meshgrid, and
for y in range(ylen):
for x in range(xlen):
# Plot the surface with face colors taken from the array we made.
ax.set_zlim(-1, 1)
ax.w_zaxis.set_major_locator(LinearLocator(6))
[Link]()
Tri-Surface plots
Axes3D.plot_trisurf(*args, **kwargs)
Argument Description
plot_trisurf(triangulation, ...)
plot_trisurf(X, Y, ...)
plot_trisurf(X, Y, triangles, ...)
plot_trisurf(X, Y, triangles=triangles, ...)
in which case a Triangulation object will be created. See Triangulation for a explanation
of these possibilities.
plot_trisurf(..., Z)
where Z is the array of values to contour, one per point in the triangulation.
Examples:
''' ======================
Triangular 3D surfaces
======================
import numpy as np
n_radii = 8
n_angles = 36
# Make radii and angles spaces (radius r=0 omitted to eliminate duplication).
x = [Link](0, (radii*[Link](angles)).flatten())
y = [Link](0, (radii*[Link](angles)).flatten())
z = [Link](-x*y)
fig = [Link]()
ax = [Link](projection='3d')
[Link]()
''' ===========================
===========================
second sets a Triangulation object's mask and passes the object directly
to plot_trisurf.
'''
import numpy as np
fig = [Link](figsize=[Link](0.5))
#============
# First plot
#============
u, v = [Link](u, v)
u, v = [Link](), [Link]()
# triple
tri = [Link](u, v)
ax = fig.add_subplot(1, 2, 1, projection='3d')
ax.set_zlim(-1, 1)
#============
# Second plot
#============
n_angles = 36
n_radii = 8
min_radius = 0.25
x = (radii*[Link](angles)).flatten()
y = (radii*[Link](angles)).flatten()
z = ([Link](radii)*[Link](angles*3.0)).flatten()
triang = [Link](x, y)
xmid = x[[Link]].mean(axis=1)
ymid = y[[Link]].mean(axis=1)
triang.set_mask(mask)
ax = fig.add_subplot(1, 2, 2, projection='3d')
ax.plot_trisurf(triang, z, cmap=[Link])
[Link]()
New in version 1.2.0: This plotting function was added for the v1.2.0 release.
''' ======================
Triangular 3D surfaces
======================
'''
import numpy as np
n_radii = 8
n_angles = 36
# Make radii and angles spaces (radius r=0 omitted to eliminate duplication).
x = [Link](0, (radii*[Link](angles)).flatten())
y = [Link](0, (radii*[Link](angles)).flatten())
z = [Link](-x*y)
fig = [Link]()
ax = [Link](projection='3d')
[Link]()
Contour plots
Argument Description
Returns a contour
from mpl_toolkits.mplot3d import
axes3d
fig = [Link]()
ax = fig.add_subplot(111,
projection='3d')
X, Y, Z = axes3d.get_test_data(0.05)
cset = [Link](X, Y, Z,
cmap=[Link])
[Link]()
fig = [Link]()
ax = [Link](projection='3d')
X, Y, Z = axes3d.get_test_data(0.05)
cset = [Link](X, Y, Z,
extend3d=True, cmap=[Link])
[Link]()
fig = [Link]()
ax = [Link](projection='3d')
X, Y, Z = axes3d.get_test_data(0.05)
ax.set_xlabel('X')
ax.set_xlim(-40, 40)
ax.set_ylabel('Y')
ax.set_ylim(-40, 40)
ax.set_zlabel('Z')
ax.set_zlim(-100, 100)
[Link]()
Filled contour plots
Argument Description
Returns a contourf
Changed in version 1.1.0: The zdir and offset kwargs were added.
fig = [Link]()
ax = [Link](projection='3d')
X, Y, Z = axes3d.get_test_data(0.05)
cset = [Link](X, Y, Z,
cmap=[Link])
[Link]()
""" .. versionadded:: 1.1.0
This demo depends on new features
added to contourf3d. """
from mpl_toolkits.mplot3d import
axes3d
import [Link] as plt
from matplotlib import cm
fig = [Link]()
ax = [Link](projection='3d')
X, Y, Z = axes3d.get_test_data(0.05)
ax.plot_surface(X, Y, Z, rstride=8,
cstride=8, alpha=0.3)
cset = [Link](X, Y, Z, zdir='z',
offset=-100, cmap=[Link])
cset = [Link](X, Y, Z, zdir='x',
offset=-40, cmap=[Link])
cset = [Link](X, Y, Z, zdir='y',
offset=40, cmap=[Link])
ax.set_xlabel('X')
ax.set_xlim(-40, 40)
ax.set_ylabel('Y')
ax.set_ylim(-40, 40)
ax.set_zlabel('Z')
ax.set_zlim(-100, 100)
[Link]()
Polygon plots
2D collection types are converted to a 3D version by modifying the object and adding z
coordinate information.
Supported are:
• PolyCollection
• LineColleciton
• PatchCollection
Nous allons voir comment créer des tableaux avec la fonction [Link]() de NumPy. Ces
tableaux pourront être utilisés comme des vecteurs ou des matrices grâce à des fonctions
de NumPy ([Link](), [Link](), [Link](), [Link](), etc.)
qui permettent de réaliser des calculs matriciels utilisés en algèbre.
Premièrement, nous allons importer le module numpy. Pour cela, il suffit de faire :
import numpy as np
Note
Dans la syntaxe « standard », on importe la totalité du module numpy et on lui donne un alias
pour alléger ensuite l’écriture de l’appel des fonctions. L’alias qui est le plus couramment utilisé
est np.
4.4.1 Tableaux - [Link]()
Pour créer des tableaux, nous allons utiliser [Link]().
Pour créer un tableau 1D, il suffit de passer une liste de nombres en argument
de [Link](). Un liste est constituée de nombres séparés par des virgules et entourés de
crochets ([ et ]).
>>> a = [Link]([4,7,9])
>>> a
array([4, 7, 9])
>>> type(a)
[Link]
On constate que ce type est issu du package numpy. Ce type est différent de celui d’une liste.
>>> type([4, 7, 9])
list
>>> a = [Link]([2,5,6,8])
>>> [Link](a)
4
>>> b = [Link]([[1, 2, 3],
[4, 5, 6]])
>>> [Link](b)
6
>>> a = [Link]([2,5,6,8])
>>> [Link](a)
(4,)
>>> b = [Link]([[1, 2, 3],
[4, 5, 6]])
>>> [Link](b)
(2, 3)
Le produit d’une matrice de taille n x m par une matrice m x p donne une matrice n x p.
4.4.7 Transposé
>>> a.T
array([[1, 4],
[2, 5],
[3, 6]])
>>> [Link](u).T
array([[ 0.-2.j, 2.-5.j, 3.+0.j],
[ 4.-3.j, 5.+0.j, 6.-2.j]])
Dans la tranche [n:m], l’élément d’indice n est inclus, mais pas celui d’indice m. Un moyen
pour mémoriser ce mécanisme consiste à considérer que les limites de la tranche sont définies
par les numéros des positions situées entre les éléments, comme dans le schéma ci-dessous :
>>> a[1:]
array([25, 34, 56, 87])
>>> a[:3]
array([12, 25, 34])
>>> a[:]
array([12, 25, 34, 56, 87])
Avertissement
a[:,n] donne un tableau 1D correspondant à la colonne d’indice n de a. Si on veut obtenir un
tableau 2D correspondant à la colonne d’indice n, il faut faire du slicing en utilisant a[:,n:n+1].
>>> a[:,1:2]
array([[2],
[5]])
>>> [Link](3)
array([ 0., 0., 0.])
>>> [Link]((2,3))
array([[ 0., 0., 0.],
[ 0., 0., 0.]])
>>> [Link](3)
array([ 1., 1., 1.])
>>> [Link]((2,3))
array([[ 1., 1., 1.],
[ 1., 1., 1.]])
>>> [Link](3)
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
Les colonnes de V sont les vecteurs propres de A associés aux valeurs propres qui apparaissent
dans D.
Exercice : Vérifier que les colonnes de V sont bien des vecteurs propres de A
>>> a = [Link](1, 6)
>>> a
array([1, 2, 3, 4, 5])
>>> [Link] = (1, [Link](a))
>>> a
array([[1, 2, 3, 4, 5]])
>>> [Link] = ([Link](a), 1)
>>> a
array([[1],
[2],
[3],
[4],
[5]])
5 Bibliographie
Ouvrages :
Martelli, Alex, Martelli Ravenscroft, Anna, Ascher, David, Python par l'exemple, O'Reilly, 2006.
Lutz, Mark et Bailly, Yves, Python précis et concis, O'Reilly, 2 édition, 2005.
Sites web :
[Link]
[Link]/pypi
[Link]/p/pythonxy/wiki/Downloads
[Link]