[go: up one dir, main page]

0% ont trouvé ce document utile (0 vote)
44 vues31 pages

Chap6 Numpy - Python 25

Le document présente le module NumPy pour le calcul matriciel en Python, en expliquant la création, l'accès et la manipulation des tableaux. Il couvre également des fonctions de base, des opérations sur les tableaux, des constructions automatiques de matrices, ainsi que des calculs statistiques et matriciels. Des exercices pratiques sont inclus pour renforcer la compréhension des concepts abordés.

Transféré par

Seydina Aioune Mboup
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
44 vues31 pages

Chap6 Numpy - Python 25

Le document présente le module NumPy pour le calcul matriciel en Python, en expliquant la création, l'accès et la manipulation des tableaux. Il couvre également des fonctions de base, des opérations sur les tableaux, des constructions automatiques de matrices, ainsi que des calculs statistiques et matriciels. Des exercices pratiques sont inclus pour renforcer la compréhension des concepts abordés.

Transféré par

Seydina Aioune Mboup
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 31

Tableaux et calcul matriciel avec

le module numpy

Dr N. BAME

Dr N. BAME 1
Introduction
• Les données qui sont utilisées pour les analyses peuvent venir de sources très
variées, mais nous pouvons toujours les considérer comme des tableaux.
• NumPy (Numerical Python) est un module Python pour stocker et effectuer des
opérations sur les données.
• Les tableaux Numpy sont comme les listes en Python, mais Numpy permet de
rendre les opérations beaucoup plus efficaces, surtout sur les tableaux de large
taille.
• Les tableaux Numpy sont au cœur de presque tout l'écosystème de data science
en Python.
• Commencer toujours par importer Numpy.
import numpy as np

Dr N. BAME 2
Création de tableaux avec Numpy
• Contrairement aux listes en Python, tous les éléments d’un tableau Numpy
doivent être du même type.
• On peut aussi spécifier le type manuellement.
• On peut créer des tableaux de différentes façons dans Numpy.

Depuis une liste Python


# Tableau d'entiers:
np.array([1, 4, 2, 5, 3])
• S’il y a des données de types différents, Numpy essaiera de les convertir toutes au type le
plus général.
• les entiers (int) seront convertis en nombres à virgule flottante ( float ) :
np.array( [3.14, 4, 2, 3] )
array([ 3.14, 4. , 2. , 3. ])

• Nous pouvons aussi manuellement spécifier un type :


• np.array([1, 2, 3, 4], dtype='float32') Dr N. BAME 3
Tableaux : numpy.array()
• Les tableaux (array) peuvent être créés avec numpy.array()
Tableaux monodimensionnels (1D)
• Pour créer un tableau 1D, il suffit de passer une liste de nombres en argument de numpy.array()

a = np.array([4,7,9] )
Tableaux bidimensionnels (2D)
• Contrairement aux listes Python, les tableaux Numpy peuvent être explicitement multi-
dimensionnels.
• Le tableau multi-dimensionnel est reconnu par NumPy.
• Mais en Python natif, on représente un tableau multidimensionnel par une liste de listes, car au final,
• un tableau à 2 entrées (lignes et colonnes), ce n'est rien d'autre qu'une liste de lignes, et une ligne est une liste de
nombres
• Pour créer un tableau 2D, il faut transmettre à numpy.array() une liste de listes grâce à des crochets
imbriqués.
a = np.array([[1, 2, 3], [4, 5, 6]])

Dr N. BAME 4
Quelques fonctions de base
• La fonction numpy.size() renvoie le nombre d’éléments du tableau.
a = np.array([2,5,6,8])
np.size(a)
4

• La fonction numpy.shape() (forme, en anglais) renvoie la taille du tableau.


b = np.array([[1, 2, 3], [4, 5, 6]])
np.shape(b)
(2, 3)

Dr N. BAME 5
Quelques fonctions de base m = np.arange(3, 15, 2)
array([ 3, 5, 7, 9, 11, 13])
La fonction numpy.arange()
type(m)
numpy.ndarray

• Sur un modèle similaire à la fonction range() , la fonction arange() permet de


construire un array à une dimension de manière simple.

• Noter la différence entre numpy.arange() et range()


• numpy.arange() retourne un objet de type numpy.ndarray.
• range() retourne un objet de type range.
• numpy.arange() accepte des arguments qui ne sont pas entiers.
• numpy.linspace() permet d’obtenir un tableau 1D allant d’une valeur de départ à une
valeur de fin avec un nombre donné d’éléments np.arange(0, 11*np.pi, np.pi)

np.linspace(3, 9, 10)
Dr N. BAME 6
Construction automatique de matrices (1)
• Il peut être parfois pénible de construire une
matrice (array à 2D) à l’aide d’une liste de listes.

• NumPy possède quelques fonctions pratiques pour


initialiser des matrices.
• Par exemple, Les fonctions zeros() et ones()
construisent des objets array contenant des 0 ou des 1.
• On leur passe en argument un tuple indiquant les
dimensions voulues.

• Par défaut, les fonctions zeros() et ones() génèrent


des floats, mais vous pouvez demander des entiers np. zeros ((2 ,3) , int )
en passant le type (par exemple int , float , etc.) en
second argument

• Enfin, si vous voulez construire une matrice avec


autre chose que des 0 ou des 1, vous avez à votre
disposition la fonction full() :
Dr N. BAME 7
Construction automatique de matrices (2)
• Tableaux de 0 : numpy.zeros()

• Tableaux de 1 : numpy.ones()

identity :Toujours pour une matrice carré


• Matrice identité - numpy.eye() ou numpy.identity()

Dr N. BAME 8
Accès aux éléments d’un tableau
• Comme pour les listes, les indices des éléments commencent à zéro.
• a[0, 1] : donne l'élément sur la ligne 0 et la colonne 1.
• a[0][1] : marche aussi, mais est moins efficace car crée d'abord la sous array a[0]
• a[-1,-1] : dernier élément.
• a[0] : première ligne, donc ici array([1, 2, 3]). a[0,1] a[1,2]
2 6
• a[:,0] : première colonne, donc ici array([1, 4]).
• a[0:2,0:2] : sous-array 2d des 2 premières lignes et 2 premières colonne
• on peut utiliser des arrays pour récupérer certains éléments :
• a[numpy.array([0, 1, 0]) , numpy.array([0, 2, 2]) ] donne array([1, 6, 3]).
• a[[0, 1, 0], [0, 2, 2]] marche aussi.

Dr N. BAME 9
Redimensionnement par reshape
• La principale méthode pour modifier la taille d’un tableau est reshape .
• Le redimensionnement d’un tableau est quand même soumis à la contrainte que
le nombre total d’éléments doit rester constant.
• On pourra ainsi passer (dans les deux sens) d’un vecteur de taille n à une matrice de taille
(p, q) ou à une matrice de taille (r, s) à condition que n = p x q = r x s.
• Si a est un tableau numpy, l’expression a.reshape(n, p) renvoie une copie
redimensionnée
• le contenu de la variable initiale n’est donc pas affecté

Dr N. BAME 10
Exercice
1. Créer deux tableaux V1 et V2 contenant respectivement les éléments ci-dessous dans
le même ordre :
a) 15, 0, 5, 9, 7,2, -6, 50
b) 6, 8, 7, 7, 0, 4, 3
2. Créer un tableau V3 contenant les nombres multiple de 3 compris entre 51 et 75
(inclus)
3. Créer un vecteur V4 de 8 éléments compris entre 21 et 63 (inclus)
4. Afficher les 4 derniers éléments de V3
5. Afficher les éléments d’indices impairs de V3

6. Construire la matrice A suivante :


7. Construire une matrice Z5x4 dont les éléments sont nuls puis une matrice U4x5 de uns
8. Créer la matrice d’identité I d’ordre 5
9. Inverser le format de la matrice A
10. Afficher les 2 premières lignes de I
11
Opérations terme à terme
• Il est possible de réaliser un produit terme à terme grâce à l’opérateur *.
• Il faut dans ce cas que les deux tableaux aient la même taille

• De la même façon on peut utiliser les opérateurs +, -, /


Dr N. BAME 12
Suppressions de lignes, de colonnes
• suppriment respectivement la k-ième ligne et la k-ième colonne de a.
• L’argument axis=... est très souvent présent (de façon facultative) dans les fonctions du module numpy :
axis=0 signifie « selon l’indice de ligne » et axis=1 signifie « selon l’indice de colonne ».

• On peut également supprimer plusieurs colonnes (ou lignes) à la fois.

Dr N. BAME 13
Insertion de lignes, de colonnes (1)
• permettent d’insérer la valeur v respectivement avant la k-ième ligne ou avant la k-ième
colonne de a.

• Les expressions append(a, v, axis=0) et append(a, v, axis=1) permettent d’ajouter une


matrice-colonne C (respectivement une matrice V ) après la dernière ligne (respectivement
après la dernière colonne) de a.
• Il faut veiller à ce que la matrice ajoutée ait un format compatible avec celui de a.

Dr N. BAME 14
Insertion de lignes, de colonnes (2)
• En reprenant l’exemple de la matrice précédente a, on voit comment ajouter la
matrice identité à droite de la matrice a
• l’argument int permet de faire en sorte que le résultat soit encore à coefficients entiers.

Dr N. BAME 15
Opérations par blocs (1)
• concatenate permet d’accoler deux ou plusieurs tableaux (horizontalement
avec axis=1, verticalement avec axis=0).
• En cas de concaténation horizontale par exemple, toutes les colonnes doivent
avoir la même hauteur.
• Les différents tableaux à concaténer doivent être donnés sous la forme d’un
tuple :

Dr N. BAME 16
Opérations par blocs (2)
• On peut aussi utiliser les fonctions hstack (concaténation horizontale) et vstack
(concaténation verticale).
• Voici quelques exemples en reprenant la signification précédente des tableaux a, b, c :

• La fonction column_stack combine des vecteurs-lignes en les colonnes d’un


tableau.
• On voit ici la différence des résultats obtenus en utilisant hstack, vstack ou column_stack
sur un tuple de deux vecteurs lignes a et b.

Dr N. BAME 17
Exercice
• Soient les matrices A, B et C suivantes :

A= B= C=

• Calculer A+B au sens élément par élément


• Fusionner horizontalement A et B en Fh
• Fusionner verticalement B et C en Fv

Dr N. BAME 18
Matrices diagonales ou triangulaires (1)
• La fonction diag renvoie la diagonale d’une
matrice.

• Avec un deuxième argument (facultatif) k, on


obtient une sur-diagonale (si k > 0)

• ou une sous-diagonale (si k < 0).

Dr N. BAME 19
Matrices diagonales ou triangulaires (2)
• Inversement, la fonction diag, si elle est appliquée à un vecteur (ou à une liste,
ou à un tuple) renvoie la matrice diagonale formée sur les coefficients de ce
vecteur :

Dr N. BAME 20
Matrices diagonales ou triangulaires (3)
• La fonction tri forme une matrice dont les coefficients valent 1 le long et en-dessous d’une k-
ème parallèle à la diagonale, et 0 au-dessus.
• On peut préciser le « dtype » (c’est float par défaut) :

• Appliquée à un tableau numpy les fonctions tril (l pour low) et triu (u pour up) renvoie une
copie du tableau où tous les coefficients au-dessus ou en-dessous d’une certaine diagonale
ont été annulés

Dr N. BAME 21
Tableaux pseudo-aléatoires
• Les fonctions qui forment des tableaux pseudo-aléatoires sont présentes dans le sous-
module random du module numpy.
• random.rand renvoie un tableau de valeurs pseudo-aléatoires dans l’intervalle [0, 1]
(au sens de la distribution uniforme).
• Elle prend comme argument un entier n1 (respectivement une séquence n1 , n2 , . . .)
et renvoie un vecteur de longueur n1 (respectivement un tableau de format n1×n2×···)
• La fonction random.sample fait la même chose que random.rand mais l’argument est
un tuple.

Dr N. BAME 22
Tableaux pseudo-aléatoires
• La fonction random.choice renvoie un échantillon aléatoire de valeurs extraites
d’un tableau a.

Dr N. BAME 23
Exercice
1. Créer les matrices triangulaires supérieure puis inférieure obtenues à partir de
A

2. Extraire la diagonale principale de A


3. Extraire la première diagonale inférieure de A
4. Extraire la deuxième diagonale supérieure de A
5. Créer une matrice diagonale avec les valeurs suivantes : 9, 6, 3, 4, 7

6. Créer une matrice R0 4x3 de nombres aléatoires compris en 0 et 1


7. Créer une matrice R1 4x3 de nombres aléatoires compris en 4 et 20
8. Créer une matrice R2 4x3 de nombres alétoires avec comme valeurs possibles
sont 18, 15, 12, 13, 9, 5, 0,20 Dr N. BAME
24
Calculs statistiques (1)
• On dispose des fonctions mean (moyenne arithmétique), var (variance) et std (écart-type)

• Toutes ces fonctions s’appliquent à une matrice. On peut alors préciser un axe de calcul (axis=0
pour un calcul sur les lignes et axis=1 pour un calcul sur les colonnes). Si on ne précise pas cet
argument, le calcul est fait « à plat ».

Dr N. BAME 25
Calculs statistiques (2)
• median(a,[axis]) calcule la valeur médiane (ou les valeurs médianes suivant un
axe d’une matrice)

• percentile(a,n[,axis]) calcule le(s) n-ième(s) percentile(s), éventuellement selon


un axe dans le cas d’une matrice.

Dr N. BAME 26
Exercice
• Soit la matrice A

1. Calculer la somme, puis la moyenne des éléments de A


2. Calculer la médiane puis la variance par colonne
3. Calculer la moyenne, puis le maximum par ligne

Dr N. BAME 27
Calcul matriciel
• Produit matriciel - numpy.dot()
• La fonction numpy.dot() permet de réaliser le produit
matriciel.

• Transposé
• .T ou .transpose()

Dr N. BAME 28
Algèbre linéaire
• Déterminant - numpy.linalg.det()

• Inverse - numpy.linalg.inv()

Dr N. BAME 29
Résolution d’un système d’équations linéaires
Résolution d’un système d’équations linéaires - numpy.linalg.solve()
• Pour résoudre le système d’équations linéaires
• 3 * x0 + x1 = 9
• x0 + 2 * x1 = 8

• Pour vérifier que la solution est correcte :


Dr N. BAME 30
Exercice
1. Calculer le déterminant de la matrice A

2. Calculer le produit matriciel de B et C

B= C=

3. Résoudre les systèmes d’équation suivants

Dr N. BAME 31

Vous aimerez peut-être aussi