tab = numpy . zeros ((3 ,5) , dtype = float ) # matrice 3 x5 de r´eels
tab = numpy . zeros ((2 ,2 ,2) , dtype = bool ) # cube 2 x2x2 de bool ´e ens `a False
Acc`es aux ´el´ements de tableau Tous les tableaux sont indic´es `a partir de 0.
import numpy # impo rter numpy
tab = numpy . zeros (3, dtype = int ) # tableau de 3 entiers , initialis ´e s `a 0
tab [0] = 12 # acc `e s au 1 er ´e l´e ment
tab [2] = -1 # acc `es au dernie r ´el ´e ment
tab [1] = tab [0] # copie du 1 er dans le 2`e me
tab_bool = numpy . zeros ((2 ,2 ,2) , dtype = bool )
tab_bool [1 ,1 ,1] = True
tab_bool [1][1] [1] = True # ´e criture al terna tive
Attributs de tableaux La taille d’un tableau unidimensionnel peut ˆetre obtenue avec l’op´erateur len, mais les
tableaux numpy poss`edent aussi un attribut size qui donne le nombre d’´el´ements notamment pour les tableaux multi-
dimensionnels.
Tranches de tableaux On peut manipuler directement un morceau de tableau o`u tous les ´el´ements ont des indices
successifs : une tranche (ou slice).
tab = numpy . array ([1 ,2 ,3 ,4 ,5 ,6])
print ( tab [0:2]) # affiche les 2 p remiers ´el ´e ments : [1 2]
print ( tab [:2]) # m ^e me chose que le pr ´e c ´e dent
print ( tab [3:]) # a ffiche d epuis l ’ i ndice 3 j usque la fin du t ableau
tab [:3]= tab [3:] # copie les 3 de rniers ´el ´e ms dans les 3 premi ers
3.2 Notion de type ”conteneur”
Un tableau est un type ”conteneur” : il a un contenu (ses ´el´ements) qui est modifiable. Par opposition; un entier
n’a pas de contenu modifiable en python : il se comporte comme une valeur litt´erale (´ecrite en toutes lettres). Pour
les types conteneurs, l’affectation prend un sens particulier : ce n’est pas une copie qui est cr´e´ee, mais un alias (un
synonyme). Si on veut une copie, il faut utiliser le constructeur numpy.array(tableau `a copier) vu plus haut.
tab = numpy . array ([1 ,2 ,3 ,4 ,5 ,6])
tab2 = tab # tab2 n ’ est PAS une copie de tab
tab [0] = 10 # ATTENTI ON : modifie tab ET tab2 , qui sont le meme objet
3.3 Liste
Python poss`ede nativement un type liste, qui est un conteneur et qui se comporte comme un tableau avec des op´erateurs
plus souples (on peut ins´erer au milieu d’une liste, l’agrandir, ...). La mani`ere dont les listes sont implant´ees rend
moins efficace l’acc`es `a un ´el´ement donn´e, mais plus efficace l’insertion et l’agrandissement. Par ailleurs les listes
peuvent contenir des ´el´ements de types diff´erents, contrairement aux tableaux : l’utilisation des listes ou des tableaux
d´epend donc des besoins.
L’op´erateur len, l’indi¸cage par [] et les tranches fonctionnent aussi sur les liste. On acc`ede au dernier ´el´ement par
l’indice -1 (ce qui fonctionne aussi sur les tableau mais est peu portable dans les autres langages)
Quelques uns des op´erateurs sp´ecifiques sont :
•liste.append(truc) : ajoute truc en fin de liste
•liste.extend(liste2) : concat`ene liste2 en fin de liste
•liste.insert(indice, truc) : ins`ere truc dans liste `a l’indice donn´e (l’indice 0 ins`ere en d´ebut de liste)
•liste.remove(truc) : retire la 1`ere occurrence de truc trouv´ee dans la liste (erreur si non trouv´e)
•liste.pop(indice) : retire et retourne l’´el´ement `a l’indice donn´e (si pas d’indice fourni retire le dernier ´elem).
•liste.index(truc) : donne l’indice de la 1`ere occurrrence de truc dans la liste
4