Académique Documents
Professionnel Documents
Culture Documents
raccourci.nom_fonction
Python : numpy
Il est possible via numpy de réaliser des opérations plus complexes
cosx = np.cos(x)
dist = np.sqrt(x*x + y*y) #distance euclidienne à l’origine
Il est possible de définir des vecteurs/tableaux/matrices et plus
encore à l’aide de la méthode array de numpy. Définissons un
vecteur horizontal à 3 éléments [1 , 2 , 3] (taille (1,3))
vect = np.array([[1 , 2 , 3]])
print(vect)
● print(vect.shape) #taille
Attention : Il y a la présence de
deux niveaux de [ ] pour avoir
un vecteur de taille (1,3). Si
défini par un seul niveau, on
obtient une taille (3, )
Python : numpy
Ici la variable vect contient un vecteur (1 x 3) avec des données
entières (type int32), i.e. chaque élément du vecteur est à valeur
dans N
La commande print(vect) affiche à l’écran le contenu de vect.
Erreur du débutant : en général vous oubliez de faire afficher le
résultat d’un calcul à la fin de votre programme.
On peut changer le typage des données avec la méthode
astype(dtype), où dtype=("int32","int64","float32", "float64") Par
exemple :
vect = np.array([[1 , 2 , 3]]).astype("float64")
print(vect)
Python : numpy
Attention au changement de type qui peut faire prendre en précision
<=> troncation
vect = np.array([1.6 , 2.2 , 3.94]).astype("int64")
print(vect)
Python : numpy
● On accède à un élément du tableau vect par vect[i] où i=0,…, N-1
Exemple (N=3) :
vect = np.array([[1.6] , [2.2] , [3.94]]).astype("int64")
print(vect[0])
print(vect[1])
● L’indice 0 est toujours le premier élément d’un tableau. L’indice N-1
est le dernier.
● vect[-1] désigne toujours le dernier élément du vecteur
● vect[a:b] extrait une partie du tableau vect où a et b représentent
des indices. a<=b et a = 0,…,N-1 ; b=1,…,N
print(vect[0:1,0])
print(vect[1:3,0])
Python : numpy
Grâce à numpy, on peut faire des opérations vectorielles, matricielles
très simplement
vect1 = np.array([[1.6 , 2.2 , 3.94]])
vect2 = np.array([[4.3 , 8.90 , - 2.78]])
res = vect1 + vect2
print(res)
Python : numpy
Le sous-module random de numpy, permet de générer des
échantillons selon différentes distributions
vect1 = np.random.rand(1 , 3) # 3 échantillons uniforme sur [0,1]
vect2 = np.random.randn(1 , 5) #5 échantillons gaussien m=0,sigma=1
Les méthodes zeros et ones permettent de générer des
vecteurs/matrices remplis de 0 ou 1 respectivement
vect3 = np.ones((1 , 3) , dtype="float64") #[1.0 , 1.0 , 1.0]
Python : numpy
Grâce à des variables numpy, il est possible de calculer facilement
des statistiques de base
import numpy as np
x = np.random.randn(10000,1)
moyx = np.mean(x)
stdx = np.std(x)
print(moyx)
print(stdx)
Il est possible d’exécuter la méthode « moyenne » directement sur
un objet numy par
moyx1 = x.mean()
stdx1 = x.std()
print(moyx1)
print(stdx1)
Python : matplotlib
Le module matplotlib de python permet d’afficher une grande
variété de graphes
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure(1)
plt.plot(x)
fig = plt.figure(2)
plt.plot(x , 'r' , linewidth=2, markersize=12 , marker='o', linestyle='dashed')
Python : matplotlib
Voici un exemple où l’on trace deux histogrammes côte à côte
Les variables dictionnaires
A partir de types de base (int, float, bool,etc.), il est possible de
définir des variables dictionnaire avec un type « construit »
L’originalité est que les indices des éléments eux-même peuvent
être définis avec un type autre qu’entier, typiquement une chaîne de
caractères
mon_dico = {"pioches": 3 , "scies": "hors stock"}
print(mon_dico["scies"])
Il est possible de créer une variable dictionnaire à la volée
mon_dico = {}
mon_dico["pioches"]=3
mon_dico["scies"]="hors stock"
Continuons avec numpy
Nous avons vu les premières méthodes avec numpy pour générér
des vecteurs/matrices (array, zeros, ones, etc..) et comment
extraire des sous-parties de ceux-ci
np.newaxis : permet de modifier/d’ajouter une dimension à un
vecteur/matrice sans rajouter de nouveau élément
exemple : soit un vecteur np.array définit avec un seul niveau de []
vect = np.array([1 , 4 , 8 , 9])
print(vect.shape) #affiche la taille du vecteur (4, ) et pas
#(4,1) ou (1,4)
vect1 = vect[: , np.newaxis]
print(vect1.shape) # (4,1) maintenant
vect2 = vect[np.newaxis ,:]
print(vect2.shape) #(1,4)
Continuons avec numpy
np.arange(a,[b],[c]) : permet de créer un np.array commençant par a
allant jusqu’en b par pas c
Remarque : les paramètres mis entre [ ] sont optionnels. Si vous les
utilisez, il ne faudra pas mettre les crochets
Remarque : si utilisé avec un seul argument on a
np.arange(d)=np.arange(0,d,1)
Exemple :
vect = np.arange(10)
print(vect)
vect1 = np.arange(1,10,3)
print(vect1)
Exemple :
A = np.arange(10).reshape(2,5)
print(A)
B = (np.arange(15)+3).reshape(5,3)
print(B)
C = np.matmul(A,B)
print(C)
print(C.shape)
Continuons avec numpy
np.mean(A,[axis=]) : calcule la moyenne empirique sur la première
dimension de A (axis=0) par défaut.
Exemple :
A = np.random.randn(100,3)
meanA0 = A.mean(axis=0).reshape(1,3) #vecteur (1x3)
meanA1 = A.mean(axis=1).reshape(100,1) #vecteur (100x1)
print(meanA0)
print(meanA1)
np.std(A,[axis=]) : calcule l’écart-type empirique sur la première
dimension (axis=0) par défaut.
Exemple :
A = np.random.randn(100,3)
stdA0 = A.std(axis=0).reshape(1,3) #vecteur (1x3)
stdA1 = A.std(axis=1).reshape(100,1) #vecteur (100x1)
print(stdA0)
print(stdA1)
Continuons avec numpy
Il est souvent très important de calculer la covariance empirique de
donnée stockées dans une matrice X (d x n) où d (d>1) est la
dimension des données et n le nombre de données
np.cov(A) : calcule la covariance empirique de données A (dxn).
retourne la matrice (dxd)
Exemple :
A = np.random.randn(3,100)
covA = np.cov(A)
print(covA) #matrice (3x3
A1 = np.random.randn(100,3)
covA1 = np.cov(np.transpose(A1))
print(covA1) #matrice (3,3)
Les branchements conditionnelles : if, elif,
else
En algorithmie, selon la valeur d’une variable, il est important de
différencier le traitement selon celle-ci.
Syntaxe :
if condition_principale: #tester en premier la condition qui se
bloc instruction₁ #réalise le plus souvent
elif condition_secondaire:
bloc instruction_2
.
.
elif condtion_{n-1}:
bloc instruction_{n-1}
else:
bloc instruction_n
Les branchements conditionnelles : if, elif,
else
Exemple :
a = 200
b = 33
if b>a:
print(‘b est plus grand que a’)
elif a==b:
print(‘a,b sont égaux’)
else:
print(‘a est plus grand que b’)
Les boucles for inconditionnelles
Il est souvent très important de répéter l’exécution d’un bloc
d’instructions python un certain nombre de fois prédéfini
L’instruction for permet cela.
Syntaxe :
for variable in range(a,b,c): #pas d’espace avant le :
bloc d’instructions à répéter #attention à bien tabuler les
#instructions à répéter
range(a,b,c) désigne un intervalle [a,b[ d’entier commençant par a se
terminant en b (exclu) par pas de c.
Exemple :
for i in range(0,10,2):
print(i)
Les boucles for inconditionnelles
Exemple :
for i in range(10):
print(‘3 *’ , i , ’=’ , 3*i)
Les boucles for inconditionnelles
Il est également possible de définir des boucles for sur des
variables dictionnaires. Pour cela on utilisera la méthode items() sur
un objet dictionnaire
mon_dico = {"pioches": 3 , "scies": "hors stock", "rateau": 12}
for clef,valeur in mon_dico.items():
print("l’élement de cléf",clef, "vaut",valeur)
Boucles for pour le calcul
Associés à des algorithmes il est souvent demandé de calculer des
sommes, des produits ou des combinaisons de sommes et produits
i=N i=N j=K i=N
s N =∑ f (x i ) p N =∏ f (x i ) e N =∏ ∑ f j ( x i )
i=1 i=1 j=1 i=1
Exemple : s N =∑ x 2i
i=1
s N =s N −1 + f ( x N ) s 0=0.0
Boucles for pour le calcul
Il faudra donc pour utiliser une boucle for en pensant bien à
initialiser s 0=0 ou p 0 =1
i=N
Exemple (suite) : s N =∑ x i
2
i=1
si si−1 2
f ( x i )=x i
Boucles for pour le calcul
Même relation de récurrence
p N = p N−1∗f ( x N ) p 0 =1.0
i=N 1
Exemple : p N =∏ x i
i
i=1