Faculté des Sciences de Tunis
Leila Ben Othman
Deuxième année du cycle préparatoire intégré - MI2/PI2
Année universitaire: 2024 - 2025
Les tableaux en numpy
Plan
1 Introduction
2 Les tableaux unidimensionnels
3 Les tableaux bidimensionnels
4 Création de tableaux particuliers
5 Opérations arithmétiques et fonctions mathématiques sur les tableaux
6 Méthodes usuelles
7 Algèbre linéaire avec numpy
Introduction
NumPy
• NumPy est une bibliothèque python parmi les plus importantes pour
faire du calcul scientifique et du machine learning. Tous les autres
modules tels que scipy, matplotlib, pandas et scikit-learn se
basent sur le type ndarray de numpy.
• Le module numpy est un module PYTHON spécialisé dans la
manipulation des tableaux à n dimensions (ndarray), qui est un
objet extrêmement puissant. Dans le cadre de notre cours, on
s’intéressera aux tableaux à 1 et à 2 dimensions.
• Les tableaux numpy sont homogènes, c’est-à-dire constitués
d’éléments de même type.
• Site officiel de numpy: [Link]
Leila Ben Othman, FST 2024-2025 4 / 37
Introduction
Le type ndarray - N-dimensional array
Image en niveaux de gris (2D array) - Image couleur (3D array)
Leila Ben Othman, FST 2024-2025 5 / 37
Introduction
Exemple de tableaux ndarray
• Matrice:
0 0 0.003 0.868 0
0 100 0.002 0.812 1
30.223 100 0.004 0.832 1
29.104 100 0.004 0.814 1
• Vecteur colonne:
9.515
8.234
30.225
29.104
27.340
• Vecteur ligne:
9.515 8.234 30.225 29.104 27.340
Leila Ben Othman, FST 2024-2025 6 / 37
Introduction
Le type ndarray - ndim/shape
Soit a un tableau (ndarray)
• [Link] =⇒ le nombre de dimensions du tableau.
• [Link] =⇒ un tuple composé du nombre d’éléments sur chaque
dimension.
Leila Ben Othman, FST 2024-2025 7 / 37
Introduction
NumPy - Slicing
Leila Ben Othman, FST 2024-2025 8 / 37
Les tableaux unidimensionnels
Création d’un tableau (1)
• Import du module numpy
import numpy as np
• Création d’un tableau à une dimension avec la fonction array
(Typage implicite)
> T=[Link]([1,2,3])
>T
array([1, 2, 3])
• L’objet crée par la fonction array est de type ndarray.
> type(T)
<class ’[Link]’>
Leila Ben Othman, FST 2024-2025 9 / 37
Les tableaux unidimensionnels
Création d’un tableau (2)
• Tous les éléments d’un tableau sont de même type. L’attribut dtype
(data type) permet de voir le type des éléments.
> [Link]
dtype(’int32’)
• Création d’un tableau avec un typage explicite en utilisant dtype
> T=[Link]([1,2,3],dtype=float)
>T
array([ 1., 2., 3.])
> [Link]
dtype(’float64’)
• Les principaux types sont : bool, int, float, complex
Leila Ben Othman, FST 2024-2025 10 / 37
Les tableaux unidimensionnels
Taille - Accès à un élément du tableau
• On calcule la taille d’un tableau T (le nombre d’éléments) à l’aide la
fonction len (len(T));
• On accède à chaque élément du tableau par son index:
• T [0]: premier élément de T
• T [len(T ) − 1]: dernier élément de T
• Lorsque l’index est négatif, le parcours est effectué à rebours à partir
de la fin:
• T [−1]: premier élément de T (de droite vers la gauche).
• T [−len(T )]: dernier élément de T (de droite vers la gauche).
Leila Ben Othman, FST 2024-2025 11 / 37
Les tableaux unidimensionnels
Attributs d’un tableau
• Le nombre de dimensions
>[Link]
1
• Le nombre d’éléments
> [Link]
3
• Le nombre d’éléments sur chaque dimension
> [Link]
(3,) # tuple: 3 éléments sur la première dimension
Leila Ben Othman, FST 2024-2025 12 / 37
Les tableaux unidimensionnels
Attributs d’un tableau
• Attention: Les attributs ndim, size et shape peuvent être
invoqués à la fois comme des attributs (caractéristiques) d’un
tableau et comme des fonctions du module numpy prenant un
tableau en paramètre.
• Par exemple pour l’attribut shape, on peut donc écrire aussi bien
[Link] que [Link](T).
Leila Ben Othman, FST 2024-2025 13 / 37
Les tableaux unidimensionnels
Découpage ou Slicing sur un tableau
• Comme pour les séquences, le module numpy permet le découpage
du tableau en tranches avec la syntaxe suivante T [debut : fin]
• T [debut : fin] désigne la tranche de T constituée des éléments dont
les index sont compris entre debut et fin − 1.
• Quand debut n’est spécifié, alors la tranche commencera du début
de T
• Quand fin n’est spécifié, alors la tranche finira à la fin de T
• La syntaxe T [debut : fin : pas] possède un troisième paramètre (par
défaut, égal à 1), indiquant le pas de sélection.
Leila Ben Othman, FST 2024-2025 14 / 37
Les tableaux bidimensionnels
Création d’une matrice (1)
• Création d’un tableau à deux dimensions (matrice) avec la fonction
array
> M=[Link]([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
>M
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
• L’objet crée par la fonction array est toujours de type ndarray.
> type(M)
<class ’[Link]’>
Leila Ben Othman, FST 2024-2025 15 / 37
Les tableaux bidimensionnels
Taille - Accès à un élément/une ligne d’une matrice
• La fonction len(M) retourne le nombre de lignes de M.
• On accède à chaque élément de la matrice par son index ligne et
index colonne:
• M[i,j]: élément qui se trouve à la ligne i et à la colonne j.
• On peut récupérer toute la ligne i avec la syntaxe M[i]. Le résultat
est un tableau à une dimension.
• M[0]: première ligne de M.
• M[len(M)-1]: dernière ligne de M.
• Lorsque l’index est négatif, le parcours est effectué à rebours à partir
de la fin:
• M[-1]: dernière ligne de M.
• M[-len(M)]: première ligne de M.
Leila Ben Othman, FST 2024-2025 16 / 37
Les tableaux bidimensionnels
Taille - Accès à un élément/une ligne d’une matrice
> len(M) > M[-len(M)]
4 array([1, 2, 3])
> M[0,2] > M[-1]
3 array([10, 11, 12])
> M[2] > M[len(M)-1]
array([7, 8, 9]) array([10, 11, 12])
> M[0] > M[-1,-1]
array([1, 2, 3]) 12
Leila Ben Othman, FST 2024-2025 17 / 37
Les tableaux bidimensionnels
Attributs de la matrice
• Le nombre de dimensions
> [Link]
2
• Le nombre d’éléments
> [Link]
12
• Le nombre d’éléments sur chaque dimension: nombre de lignes,
nombres de colonnes
> [Link]
(4,3) # tuple: 4 lignes et 3 colonnes
Leila Ben Othman, FST 2024-2025 18 / 37
Les tableaux bidimensionnels
Découpage ou Slicing sur une matrice
>M=[Link]([[1,2,3,4,5,6,7,8],[9,10,11,12,14,15,16,17],
[18,19,20,21,22,23,24,25],[26,27,28,29,30,31,32,33]])
>M
array([[ 1, 2, 3, 4, 5, 6, 7, 8],
[ 9, 10, 11, 12, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23, 24, 25],
[26, 27, 28, 29, 30, 31, 32, 33]])
Lignes 1 à 3, colonnes 2 à 5 Lignes et colonnes paires
> M[1:4,2:6] > M[::2,::2]
array([[11, 12, 14, 15], array([[ 1, 3, 5, 7],
[20, 21, 22, 23], [18, 20, 22, 24]])
[28, 29, 30, 31]])
Leila Ben Othman, FST 2024-2025 19 / 37
Les tableaux bidimensionnels
Découpage ou Slicing sur une matrice
Lignes et colonnes impaires
> M[1::2,1::2]
array([[10, 12, 15, 17],
[27, 29, 31, 33]])
Trois premières lignes, deux premières colonnes
> M[:3,:2]
array([[ 1, 2],
[ 9, 10],
[18, 19]])
Leila Ben Othman, FST 2024-2025 20 / 37
Les tableaux bidimensionnels
Découpage ou Slicing sur une matrice
à partir de la ligne 2, à partir de la colonne 4
> M[2:,4:]
array([[22, 23, 24, 25],
[30, 31, 32, 33]])
on inverse l’ordre des colonnes
> M[:,::-1]
array([[ 8, 7, 6, 5, 4, 3, 2, 1],
[17, 16, 15, 14, 12, 11, 10, 9],
[25, 24, 23, 22, 21, 20, 19, 18],
[33, 32, 31, 30, 29, 28, 27, 26]])
Leila Ben Othman, FST 2024-2025 21 / 37
Les tableaux bidimensionnels
Découpage ou Slicing sur une matrice
on inverse l’ordre des lignes
>M[::-1,::] ou bien simplement M[::-1]
array([[26, 27, 28, 29, 30, 31, 32, 33],
[18, 19, 20, 21, 22, 23, 24, 25],
[ 9, 10, 11, 12, 14, 15, 16, 17],
[ 1, 2, 3, 4, 5, 6, 7, 8]])
on inverse l’ordre des lignes et l’ordre des colonnes
> M[::-1,::-1]
array([[33, 32, 31, 30, 29, 28, 27, 26],
[25, 24, 23, 22, 21, 20, 19, 18],
[17, 16, 15, 14, 12, 11, 10, 9],
[ 8, 7, 6, 5, 4, 3, 2, 1]])
Leila Ben Othman, FST 2024-2025 22 / 37
Les tableaux bidimensionnels
Accès à une colonne
• La syntaxe M[:,b] permet d’accéder à la colonne d’indice b. Le
résultat est un tableau à une dimension.
• De même, la syntaxe M[:,b:b+1] permet d’accéder à la colonne
d’indice b. Le résultat est un tableau à deux dimensions.
Accès à la colonne d’indice 3
> M[:,3]
array([ 4, 12, 21, 29])
Accès à la colonne d’indice 3
> M[:,3:4]
array([[ 4],
[12],
[21],
[29]])
Leila Ben Othman, FST 2024-2025 23 / 37
Création de tableaux particuliers
Création de tableaux particuliers
• Tableau d’une dimension de 5 valeurs aléatoires (par défaut, des
réels)
> [Link](5)
array([ 2.79206344e+178, 2.25315555e-316, 0.00000000e+000,
2.80858511e+178, 6.35862486e-321])
Leila Ben Othman, FST 2024-2025 24 / 37
Création de tableaux particuliers
Création de tableaux particuliers
• Tableau d’une dimension de 5 valeurs égales à 1.
> [Link](5)
array([ 1., 1., 1., 1., 1.])
> [Link](5,int)
array([1, 1, 1, 1, 1])
• Tableau d’une dimension de 5 valeurs égales à 0.
> [Link](5)
array([ 0., 0., 0., 0., 0.])
Leila Ben Othman, FST 2024-2025 25 / 37
Création de tableaux particuliers
Création de tableaux particuliers
• La fonction arange(d, f , h) permet de créer un tableau de valeurs de
l’intervalle [d, f [ avec un pas de h.
• Les paramètres d et h sont optionnels.
> [Link](10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
> [Link](1,10)
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
> [Link](1,10,2)
array([1, 3, 5, 7, 9])
Leila Ben Othman, FST 2024-2025 26 / 37
Création de tableaux particuliers
Création de tableaux particuliers
• La fonction linspace(a, b, n) permet de créer un tableau de n valeurs
régulièrement échelonnées de l’intervalle [a,b] (les bornes de
l’intervalle sont incluses). Par défaut, n est égale à 50.
> [Link](0,100,4)
array([ 0. , 33.33333333, 66.66666667, 100. ])
pour exclure la borne supérieure de l’intervalle:
> [Link](0,100,4,endpoint=False) array([ 0., 25., 50., 75.])
pour connaître la valeur du pas utilisé pour générer les éléments:
> [Link](0,100,4,retstep=True) (array([ 0. , 33.33333333,
66.66666667, 100. ]), 33.333333333333336)
Leila Ben Othman, FST 2024-2025 27 / 37
Création de tableaux particuliers
Création de matrices particulières
• Tableau de deux dimensions de valeurs aléatoires (2 lignes, 2
colonnes).
> [Link]((2,2))
array([[ 9.61395921e-293, 9.26242852e-293],
[ 9.08574574e-293, 6.35862486e-321]])
Leila Ben Othman, FST 2024-2025 28 / 37
Création de tableaux particuliers
Création de matrices particulières
• Tableau de deux dimensions dont les valeurs sont égales à 1 (2
lignes, 2 colonnes).
> [Link]((2,2))
array([[ 1., 1.],
[ 1., 1.]])
• Tableau de deux dimensions dont les valeurs sont égales à 0 (2
lignes, 2 colonnes).
> [Link]((2,2))
array([[ 0., 0.],
[ 0., 0.]])
Leila Ben Othman, FST 2024-2025 29 / 37
Création de tableaux particuliers
Création de matrices particulières
• La fonction identity (n) permet de créer la matrice identité d’ordre n.
> [Link](4)
array([[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]])
Leila Ben Othman, FST 2024-2025 30 / 37
Création de tableaux particuliers
Création de matrices particulières
• La fonction diag, permet de créer une matrice diagonale formée par
les coefficients passés en paramètres (sous forme de liste, de tuple
ou même de tableau).
> [Link]([1,2,3,4])
array([[1, 0, 0, 0],
[0, 2, 0, 0],
[0, 0, 3, 0],
[0, 0, 0, 4]])
> [Link]((1,2,3,4))
array([[1, 0, 0, 0],
[0, 2, 0, 0],
[0, 0, 3, 0],
[0, 0, 0, 4]])
Leila Ben Othman, FST 2024-2025 31 / 37
Opérations arithmétiques et fonctions mathématiques sur les tableaux
Opérations arithmétiques
Soient A et B deux tableaux numpy, les opérations mathématiques
suivantes sont disponibles:
• Addition: A + B additionne terme à terme les éléments de A et B
• Soustraction: A − B soustrait terme à terme les éléments de B à
ceux de A
• Multiplication: A ∗ B multiplie terme à terme les éléments de A et B
• Division: A/B quotients terme à terme des éléments de A par ceux
de B
• Puissance: A ∗ ∗B élève les éléments de A à la puissance les
éléments de B
NB: Toutes ces opérations sont également applicables avec un scalaire:
addition des éléments d’un tableau et un scalaire, multiplication des
éléments par un scalaire, etc.
Leila Ben Othman, FST 2024-2025 32 / 37
Opérations arithmétiques et fonctions mathématiques sur les tableaux
Fonctions mathématiques
• Toutes les fonctions mathématiques usuelles sont disponibles dans le
module numpy et restent applicables sur des tableaux à une ou deux
dimensions. Citons par exemple: les fonctions sin, cos, tan, log,
sqrt, exp, etc.
> T=[Link](-3*[Link],3*[Link],5)
>T
array([-9.42477796, -4.71238898, 0. , 4.71238898, 9.42477796])
> [Link](T)
array([ -3.67394040e-16, 1.00000000e+00,
0.00000000e+00,-1.00000000e+00, 3.67394040e-16])
Leila Ben Othman, FST 2024-2025 33 / 37
Méthodes usuelles
Méthodes usuelles
• [Link]() renvoie la somme des éléments de M.
• [Link]() renvoie le minimum des éléments de M.
• [Link]() renvoie le maximum es éléments de M.
NB:
• Quand le paramètre axis=0 est spécifié, la méthode [Link](axis=0)
(resp [Link](axis=0), [Link](axis=0)) retourne un tableau composé
respectivement de la somme, du min et du max des éléments de
chaque colonne.
• Quand le paramètre axis=1 est spécifié, la méthode [Link](axis=1)
(resp [Link](axis=1), [Link](axis=1)) retourne un tableau composé
respectivement de la somme, du min et du max des éléments de
chaque ligne.
Leila Ben Othman, FST 2024-2025 34 / 37
Méthodes usuelles
Méthodes usuelles
> M=[Link]([[1,2,3],[4,5,6]])
>M
array([[1, 2, 3],
[4, 5, 6]])
> [Link]()
21
> [Link](axis=0)
array([5, 7, 9], dtype=int32)
> [Link](axis=1)
array([ 6, 15], dtype=int32)
Leila Ben Othman, FST 2024-2025 35 / 37
Algèbre linéaire avec numpy
Produit matriciel et transposé
• La fonction produit matriciel est disponible directement sous numpy
sous le nom dot. De même pour la transposition de matrice
(transpose).
> A = [Link]([[1,2],[3,4]])
> B = [Link]([[2,0],[3,4]])
> [Link](A,B)
array([[ 8, 8],
[18, 16]])
>A
array([[1, 2],
[3, 4]])
> [Link](A)
array([[1, 3],
[2, 4]])
Leila Ben Othman, FST 2024-2025 36 / 37
Algèbre linéaire avec numpy
Le module linalg
• Afin d’utiliser d’autres méthode d’algèbre linéaire, il faut utiliser le
sous module linalg de numpy qu’il faudra importer avec la
commande: import [Link] as lng
Déterminent [Link](M)
Inverse [Link](M)
Vecteurs propres [Link](M)
Valeurs propres [Link](M)
Résolution d’un système linéaire [Link](A,B) : retourne le vecteur X
solution du système A*X=B
Leila Ben Othman, FST 2024-2025 37 / 37