Vous êtes sur la page 1sur 3

IPT SYNTHESE TABLEAU 1 ET 2 D S3 RAPPELS

Représentation de Matrices et vecteurs en python


Objectif : définir des matrices par listes ou tableaux numpy

1- Représentation des matrices à deux dimensions en Python


Les deux objets usuels utilisés pour représenter les matrices sont les listes de listes et les tableaux numpy. La
bibliothèque numpy propose un autre type, numpy.matrix, spécifiquement adapté au calcul matriciel. Nous ne
l’aborderons pas ici.

Représentation par une liste de listes (type list)


Avec les objets de base de Python, chaque ligne peut être représentée par une liste.
La matrice est définie par une liste de lignes, soit par une liste de listes.
L0 = [2., 2, -3] # première ligne
L1 = [-2, -1, 1] # deuxième ligne
L2 = [4, 1, 1] # troisième ligne
A =[L0, L1, L2] # matrice

On préfèrera une définition sans variables intermédiaires :


A = [[2., 2, -3], [-2, -1, 1], [4, 1, 1]]
ou, pour plus de lisibilité (un passage à la ligne est possible entre les éléments d’une liste) :
A = [[2., 2, -3],
[-2, -1, 1],
[4, 1, 1]]

Exemples de valeurs retournées par les différentes lignes de code suivantes :


Objet retourné Type de l’objet retourné
A[1] Ligne d’indice 1 : Liste
[-2, -1, 1]
A[1][2] 1 Entier

A[0][0] 2. Flottant

A[1,2] Une erreur

len(A) 3, le nombre de lignes entier

Remarque : pour des études spécifiques, il est tout à fait possible de définir la matrice comme une liste de colonnes. À
éviter absolument dans le cas général.

Représentation par un tableau numpy (type np.array)


Le type array du module numpy permet une représentation de tableaux à plusieurs dimensions. Tous les
éléments du tableau sont du même type (tableau homogène).
La création d’un tableau de n lignes par m colonnes peut être réalisé avec les fonctions :
 np.zeros((n,m)) : tableau rempli de flottants zeros ;
 np.ones((n,m)) : tableau rempli de flottants 1 ;
 np.empty((n,m)) : tableau de valeurs non initialisées (quelconques).
Noter que ces fonctions ne prennent qu’un seul argument. Les différentes dimensions sont spécifiées par un objet
itérable, liste ou tuple, comme dans ces exemples.

Informatique pour tous 05/02/2019


Synthèse représentation des vecteurs en python CPGE

Pour la définition de la matrice A , on utilise une conversion à partir d’une liste de lignes :
A = np.array([[2., 2, -3],
[-2, -1, 1],
[4, 1, 1]])

Exemples de valeurs retournées par les différentes lignes de code suivantes :


Objet retourné Type de l’objet retourné
A[1] Ligne d’indice 1 : array([-2, -1, 1]) Tableau numpy unidimensionnel

A[1][2] 1  expression à éviter Flottant (tableau homogène)

A[1,2] 1 expression à utiliser Flottant

A[1,:] Ligne d’indice 1 : array([-2, -1, 1]) Tableau numpy unidimensionnel


Préférer A[1]
A[1,1:] Éléments de la ligne d’indice 1, des colonnes débutant à Tableau numpy unidimensionnel
l’indice 1  array([-1, 1])
A[:,1] colonne d’indice 1  array([2, -1, 1]) Tableau numpy unidimensionnel

A[:2,1] Éléments des lignes jusqu’à celle d’indice 1 (2 exclu), de Tableau numpy unidimensionnel
la colonne d’indice 1  array([2, -1])
len(A) 3, le nombre de lignes Entier

A.shape (3,3) tuple

A[:2,:2] array([[ 2., 2.], [-2., -1.]])


Idem A [0:2,0:2]

A[1:,1:] array([[-1., 1.], [1., 1.]])

2- Représentation des vecteurs en Python


Que ce soit avec des listes ou des tableaux numpy, il faut distinguer :
 les tableaux unidimensionnels qui n’ont qu’une seule dimension ;
 les tableaux bidimensionnelsayant une dimension unitaire.

Exemples de création de vecteurs en listes et en tableaux numpy.


Représentation avec Vecteur unidimensionnel Vecteur ligne Vecteur colonne
des listes B = [2, -5, 16] B = [[2, -5, 16]] B = [[2], [-5], [16]]
3 éléments 1 ligne de 3 éléments 3 lignes de 1 élément
des tableaux numpy B=np.array([2,-5,16]) B=np.array([[2,-5,16]]) B=np.array([[2],[-5],[16]])
B.shape (3) (1,3) (3,1)
len(B.shape) 1 (une dimension) 2 (deux dimensions) 2 (deux dimensions)
print(B.T) [ 2 -5 16] [[ 2] [[ 2 -5 16]]
[-5]
[16]]
Pour les tableaux numpy, la propriété .T retourne la transposée du vecteur.

Un tableau unidimensionnel ne distingue pas un vecteur ligne d’un vecteur colonne.


La transposée d’un tableau unidimensionnel retourne le même vecteur.
Les tableaux bidimensionnels permettent de distinguer les vecteurs lignes des vecteurs colonnes. La transposée d’un
vecteur ligne retourne un vecteur colonne et réciproquement.

Lignes et colonnes d’un tableau numpy sont des tableaux unidimensionnels (cf. Q3).
En pratique, il faut éviter d’utiliser des vecteurs sous la forme bidimensionnels.

Informatique pour tous Page 2


Synthèse représentation des vecteurs en python CPGE

Remarque : recopie d’un tableau avec duplication des données

Pour les listes comme pour les tableaux numpy, une affectation (A=B) ne duplique pas les données (une
modification de A entraîne la modification de B, et réciproquement).

Pour dupliquer les données il faut :

Pour une liste ou une liste de listes : utiliser la fonction deepcopy du from copy import *
module copy A = deepcopy(B)
Pour un tableau numpy Utiliser la fonction np.copy A = np.copy(B)
ou A = B.copy()

Informatique pour tous Page 3

Vous aimerez peut-être aussi