• Aucun résultat trouvé

Séance 4: Les tableaux

N/A
N/A
Protected

Academic year: 2022

Partager "Séance 4: Les tableaux"

Copied!
7
0
0

Texte intégral

(1)

Séance 4: Les tableaux

Cours d’informatique de BCPST Première année.

(2)

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

(3)

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

(4)

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 ?

(5)

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

(6)

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.

(7)

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

Références

Documents relatifs

((Ils voient un monsiour qui tombe sur le fBUJ) (Jean-Mariel. Comme on se savait écouté et qu'on écoutait, beaucoup de choses se disaient. J'aimais cette attention

Leurs scores ont été enregistrés dans le tableau ci-dessous, mais trois ont été effacés.. Si tu as besoin de faire des calculs, utilise

On peut également tracer le cercle des corrélation puisque les variables sont de norme unité (elles sont donc située dans un cercle de rayon 1 lorsqu'elles sont projetées)5. Plus

Trois jeunes couples - dont les partenaires ont le même âge - sont partis en vacances ensemble.. Retrouvez les partenaires de chaque couple, ainsi que

Sur route mouillée, cette distance de freinage est deux fois plus grande que sur route sèche à vitesse égale.. Recopie et complète le tableau à double

On utilise un tableau simple pour organiser des données selon un seul critère Exemples : Ces deux tableaux présentent la longueur de certains fleuves français :. II-Tableau à

De plus, si une variable, j , est éliminée du codage, ce qui revient à lui attribuer zéro modalité, la colonne, j , n'en subsiste pas moins dans le tableau des numéros de

Sur route mouillée, cette distance de freinage est deux fois plus grande que sur route sèche à vitesse égale.. Recopie et complète le tableau à double