Académique Documents
Professionnel Documents
Culture Documents
Simulation numérique :
Présentation de la bibliothèque numpy
Manipulation des vecteurs
Dr. Ghabri Afef Année Universitaire : 2020-2021
Introduction
Dans cette partie, nous nous intéressons à des méthodes numériques pour la
résolution d’équations sur les réels, de systèmes linéaires et d’équations
différentielles.
1
Introduction
On garde à l’esprit que les données prises en entrée sont des approximations
des données « réelles » (parce qu’issues d’autres calculs ou de mesures
physiques). De plus, on résout des équations qui sont une approximation de la
vie réelle (linéarisation d’un phénomène en physique...) et on applique pour
cela des schémas qui introduisent une erreur dans le résultat.
2
Notion de modules
Un module est un fichier ayant pour extension « .py » contenant des définitions de
classes, constantes et fonctions. Tout programmeur python peut réaliser un module.
Un tableau est une liste de nombres uniquement (flottants, entiers, complexes ….).
Les tableaux peuvent être des vecteurs ou des matrices accessibles à partir de la librairie
Numpy qui doit être préalablement chargée et qui contient des fonctions permettant de
réaliser des calculs matriciels utilisés en algèbre linéaire. Le type tableau en python est
array.
Un tableau est une structure référencée par un seul nom et qui est composée de
plusieurs données stockées de manière contiguë en mémoire (les unes à la suite des
autres).
Au niveau de la mémoire, un tableau est donc une suite de cases (espace mémoire). La
taille de chacune des cases est conditionnée par le type de donnée que contient cette
case.
5
Les tableaux : en algorithmique
Pour i de 1 à N faire
Ecrire(Notes[i])
FinPour
6
Le tableau à une dimension: (unidimensionnel ou vecteur)
Fonctions Description
array(L) Crée un tableau à partir d'une liste L.
7
Le tableau à une dimension: (unidimensionnel ou vecteur)
Fonctions Exemples
Importer numpy import numpy as np
from numpy import * #autrement
Créer un tableau (taille >>> t=np.empty(3)
donnée, valeurs aléatoires) >>> type(t)
Créer un tableau à partir d’une >>> tab1 = np.array([10.2,3.4,3,4,5])
liste >>> type(tab1)
Taille du tableau >>> len(tab1)
Accès aux éléments du tableau >>> tab1[2]
tab [indice_deb : indice_fin] >>> tab1[1 :3] #éléments de 1 à 2
>>> tab1[0 :2] #éléments de 0 à 1
>>> tab1[ :3] #Les 3 premiers éléments
>>> tab1[3 :] #Tous sauf les 3 premiers
>>> tab1[-1]
>>> tab1[-2]
>>> arange(15) # correspond à la fonction
range() pour les listes
a = np.array([1.2,2.5,3.2,1.8])
#type de la structure
print(a.dtype) #float64
#nombre de dimensions
print(a.ndim) #1
print(np.ndim(a))
print(np.shape(a))
print(a.size) #4
9
print(np.size(a))
Le tableau à une dimension: (unidimensionnel ou vecteur)
Typage des données :
a = np.array([1,2,4])
print(a.dtype) #int32
a = np.array([1,2,4],dtype=float)
print(a.dtype) #float64
10
Le tableau à une dimension: (unidimensionnel ou vecteur)
b = np.array([True,False,True,True], dtype=bool)
Création d’un array d’objets complexes (autres que les types de base)
est possible
a = np.array([{"Toto":(45,2000)},{"Tata":(34,1500)}])
print(a.dtype) #object
11
Le tableau à une dimension: (unidimensionnel ou vecteur)
Création d’une séquence de valeurs:
#suite arithmétique de raison 1
a = np.arange(start=0,stop=10)
a = np.arange(start=0,stop=10,step=2)
print(a) #[0 2 4 6 8]
a = np.linspace(start=0,stop=10,num=5)
print(a) #[0. 2.5 5. 7.5 10.] ,la dernière valeur est incluse ici
a = np.ones(shape=5)
Redimensionnement:
#vecteur de valeurs
a = np.array([1.2,2.5,3.2,1.8])
a = np.append(a,10)
13
Le tableau à une dimension: (unidimensionnel ou vecteur)
Redimensionnement explicite
a = np.array([1,2,3])
#redimensionnement
a.resize(5)
Concaténation de 2 vecteurs
#concaténation 2 vecteurs
x = np.array([1,2,5,6])
y = np.array([2,1,7,4])
z = np.append(x,y)
print(z) #[1 2 5 6 2 1 7 4]
14
Le tableau à une dimension: (unidimensionnel ou vecteur)
Extraction des valeurs :
#moyenne
print(np.mean(v)) # 5.52
#médiane
print(np.median(v)) # 6.3
#variance
print(np.var(v)) # 6.6856
#quantile
#somme
print(np.sum(v)) # 27.6
#somme cumulée
#produit scalaire
z = np.vdot(x,y)
print(z) # 4.86
#opérations ensemblistes
x = np.array([1,2,5,6])
y = np.array([2,1,7,4])
#intersection
print(np.intersect1d(x,y)) # [1 2]