Séance 4: Les tableaux
Cours d’informatique de BCPST Première année.
1 Création 2 1.1 À la main . . . 2 1.2 Avec des fonctions . . . 3
2 Opérations sur les tableaux 3
2.1 Opérations arithmétiques. . . 3 2.2 Comparaison avec les listes . . . 4 2.3 Quelques fonctions pratiques . . . 4
3 Accès aux éléments 5
4 Modification d’éléments 5
5 Anticipations possibles avant le TP 6
Séance 4: Les tableaux
1. Création
Définition. — Un tableau est un ensemble de données, de même type, organisé en lignes et colonnes.
C’est un objet mutable dont le type estarray.
Sa structure ressemble à celle d’une liste mais en plus rigide :
• Un tableau aune taille fixéelors de sa création. On ne peut donc pas lui rajouter ou enlever des éléments comme avec une liste (donc pas de méthode append, ni de méthode pop).
• Tous les éléments d’un tableau doivent êtredu même type, type fixé à la création.
Ces contraintes permettent d’optimiser la gestion mémoire et les opérations sur les tableaux. Ainsi, à la création, la taille et le type des données du tableau permettent à Python de savoir exactement quelle espace mémoire prendra le tableau et cela ne variera plus. Les accès aux éléments du tableau, les opérations pourront être optimisés et plus rapides qu’avec des listes.
1.1 À la main
Pour créer une tableau, on donne ses éléments sous forme d’une liste de listes que l’on transforme en tableau en lui appliquant la fonction array :
1. La première liste définit la première ligne
2. la deuxième liste définit la seconde ligne (si cette seconde ligne existe, un tableau peut n’avoir qu’une seule ligne).
3. ...
La fonction array faisant partie de la bibliothèque Numpy, il faudra l’importer : import numpy as np
Pour créer le tableau
a1,1 a1,2 · · · a1,p ... ... ... an,1 an,2 · · · an,p
, on écrira donc :
np . array ([[ a_ {1 ,1} , ... , a_ {1 ,p}] , ... , [ a_ {n ,1} , ... , a_ {n ,p }]])
Quelques remarques avant de démarrer :
1. On notera la présence de crochets et de parenthèse dans la définition d’un tableau. On a d’abord des crochets pour délimiter chacune des lignes (puisqu’une ligne du tableau est une liste) puis des crochets délimitant le tout (puisqu’une tableau est une liste de listes transformée par la fonction array) et enfin des parenthèses pour appliquer la fonction array.
2. On le rappelle : les éléments d’une tableau sont de même type. Les listes et les dictionnaires peuvent contenir des variables qui ne sont pas nécessairement de même nature. Ce n’est pas le cas pour les tableaux ! On rencontrera donc des tableaux d’entiers, de flottants, de booléens, de chaînes de caractères... Attention, quand on modifie un élément d’un tableau, il conserve son type initial.
Voici un premier tableau :
np . array ([['1 ','2 ','3 '] ,['3 ','4 ','5 ']])
Institut d’Alzon 2022/2023 page 2
1.2 Avec des fonctions
Quelques fonctions bien pratiques pour construire rapidement un tableau dont la taille est fixée :
np . zeros ((n ,p )) # Tableau de taille n*p rempli de zéro
np . array (n * [p * [0]]) # Tableau de taille n*p rempli de zéro np . ones ((n ,p )) # Tableau de taille n*p rempli de un
np . eye (n) # Tableau de taille n*n rempli de zéro mais avec des uns
# sur la diagonale
np . linspace (a ,b ,n) # Tableau ligne commençant par a , se terminant par b
# et ayant n éléments régulièrement espacés
np . random . rand (n ,p) # Tableau de taille n*p rempli de nombres aléatoires
# répartis uniformément de l ' intervalle ]0; 1[
2. Opérations sur les tableaux
2.1 Opérations arithmétiques
Contrairement aux listes, il est possible d’effectuer les opérations arithmétiques (addition, soustraction, multiplication, division) sur des tableaux de nombres. Ces opérations ont lieu uniquement entre tableaux de même format et s’effectuent coefficient par coefficient. Les opérations élémentaires possibles sur les tableaux sont rassemblées dans le tableau suivant :
Instruction Python Opération
+ Addition
∗ Multiplication
− Soustraction
/ Division
∗∗ Puissance
in Appartenance
sum Somme
Trois petites choses à noter :
1. On peut aussi faire des opérations entre un nombre et tableau. Siaest un nombre et T un tableau alors la commandea+ T renvoie le tableau dont les éléments sont ceux de T auquel on a ajouté aet la commandea∗T renvoie le tableau dont les éléments sont ceux de T multipliés para.
2. On peut appliquer des fonctions qui se trouvent dans la bibliothèque numpy (comme l’exponen- tielle, le logarithme, le cosinus...) sur un tableau, cela agira coefficient par coefficient. Si T est notre tableau et f la fonction, il suffit d’écrire f(T) pour obtenir ce qu’on veut !
3. Dernière remarque, on a vu que∗effectuait une multiplication terme à terme. Si on souhaite calculer le produit matriciel de deux matrices (opération que vous verrez plus tard en maths), la commande dot de la bibliothéque Numpy le permet.
Testons tout ceci. Qu’obtient-on en tapant les opérations suivantes dans l’interprète de commande ?
Séance 4: Les tableaux
T = ones ([3 ,4])
R= floor (10* random.rand (3 ,4)) R+T
R*T
2.2 Comparaison avec les listes
On a déjà vu les opérations sur les listes lors des séances précédentes. Ici, on utilise les mêmes symboles mais les opérations effectuées ne sont pas les mêmes :
1. Dans le cas des listes, l’opération + correspond à une concaténation. Dans le cas des tableaux, c’est une simple addition coefficient par coefficient.
2. Pour les listes, la multiplication par un entierncrée une nouvelle liste constituée dencopies de la liste de départ. Pour les tableaux, la multiplication par un nombrenrenvoie le tableau de départ dans lequel chaque coefficient a été multiplié par le facteurn.
3. Dans le cas des listes, l’opération == permet de comparer globalement deux listes, on sait alors si oui ou non, deux listes sont égales. Pour les tableaux, la comparaison s’effectue coefficient par coefficient et on obtient un tableau de booléens et pas un seul booléen !
Au passage, on se rend compte qu’on peut effectuer des opérations arithmétiques sur une listes de nombres en la transformant avant en un tableau.
[1 ,2 ,3]+[1 ,2 ,3]
a= np . array ([1 ,2 ,3])+ np . array ([1 ,2 ,3]) a
list(a)
2.3 Quelques fonctions pratiques
Un tableau T étant donné, on peut obtenir :
dtype (T) # Donne le type des données du tableau len(T) # Donne le nombre de ligne du tableau
size (T) # Donne le nombre d ' éléments du tableau size (T ,0) # Donne le nombre de lignes du tableau size (T ,1) # Donne le nombre de colonnes du tableau
shape (T) # Donne le couple ( nombre de ligne , nombre de colonne ) shape (T )[0] # Donne le nombre de lignes du tableau
shape (T )[1] # Donne le nombre de colonnes du tableau
Institut d’Alzon 2022/2023 page 4
3. Accès aux éléments
On peut accéder individuellement aux éléments d’un tableau T, il suffit d’écrire l’instruction suivante :
T[i ,j] # Donne l ' élément du tableau T situé à l ' intersection de la ligne
# numérotée i et de la colonne numérotée j
Python indice encore à partir de 0 et augmente de 1 au fur et à mesure. T[i, j] est donc le coefficient à l’intersection de lai+ 1ieme` ligne et laj+ 1ieme` colonne. On note aussi qu’on peut utiliser des indices négatifs, cela permet d’accéder aux éléments à partir de la fin du tableau. Quand un indice est négatif, on parcourt la ligne (ou la colonne) en partant de la fin.
Comme pour les listes, il est fondamental aussi de connaître la technique du slicing. Supposons que Tasoit un tableau connu alors :
Ta [i , :] # Ligne i du tableau Ta [: , j] # Colonne j du tableau
Ta [i :] # Tableau à partir de la ligne i Ta [: i] # Tableau jusqu 'à la ligne i -1
Testons :
A= ceil (8 * random.rand (4 ,2)) # Une astuce à retenir pour créer rapidement
# un tableau dont les coefficients sont des entiers compris entre 1 et 8
A [1 ,1]
A [2 ,:]
4. Modification d’éléments
Définition. — Il est possible de modifier le contenu d’un tableau (dans le langage Python), un tableau est donc un objetmutable.
On peut modifier les éléments du tableauTaainsi :
Ta [i ,j] = val # Modifie l ' élément de la ligne i et de la colonne j du
# tableau Ta en lui affectant val comme nouvelle valeur
Ta [i] = Li # Modifie la ligne i de Ta en la remplaçant par la liste Li Ta [: , i] = Li # Modifie la colonne i de Ta en la remplaçant par Li
On fera des tests en TP.
Séance 4: Les tableaux
5. Anticipations possibles avant le TP
Avant le prochain TP, je peux tout simplement retravailler ce cours en me faisant une fiche avec les notions les plus importantes.
Institut d’Alzon 2022/2023 page 6