page1
Tirages pseudo-aléatoires
Modules random et numpy.random
import random
random.random()  Valeur flottante dans l'intervalle [0,1[ (loi uniforme)
random.randint(a,b)  Valeur entière entre a inclus et b inclus (équiprobabilité)
random.choice(L)  Un élément de la liste L (équiprobabilité)
random.shuffle(L)  None, mélange la liste L « en place »
import numpy.random as rd
rd.rand(n0,…,nd-1)  Tableau de forme (n0,…,nd-1), de flottants dans l'intervalle [0,1[ (loi uniforme)
rd.randint(a,b,shp)  Tableau de forme shp, d'entiers entre a inclus
et b exclu (équiprobabilité)
rd.randint(n,size=d)  Vecteur de dimension d, d'entiers entre 0 et n-1 (équiprobabilité)
rd.choice(Omega,n,p=probas)  Tirage avec remise d'un échantillon de taille n dans Omega, avec les probabilités probas
rd.choice(Omega,n,replace=False)  Tirage sans remise d'un échantillon de taille n dans Omega (équiprobabilité)
rd.normal(m,s,shp)  Tableau de forme shp de flottants tirés selon une loi normale de moyenne m et d'écart-type s
rd.uniform(a,b,shp)  Tableau de forme shp de flottants tirés selon une loi uniforme sur l'intervalle [a , b[
Fonctions mathématiques
import numpy as np
☝ En calcul scientifique, il est préférable d'utiliser les fonctions de numpy, au lieu de celles des modules basiques math et cmath, puisque les fonctions de numpy sont vectorisées : elle s'appliquent aussi bien à des scalaires (float, complex) qu'à des vecteurs, matrices, tableaux, avec des durées de calculs minimisées.
np.pi, np.e  Constantes p et e
np.abs, np.sqrt, np.exp, np.log, np.log10, np.log2
 abs , racine carrée, exponentielle,
logarithmes népérien, décimal, en base 2
np.cos, np.sin, np.tan  Fonctions trigonométriques (angles en radians)
np.degrees, np.radians  Conversion radiandegré, degréradian
np.arccos, np.arcsin  Fonctions trigonométriques réciproques
np.arctan2(y,x)  Angle dans ]-p,p]
np.cosh, np.sinh, np.tanh (trigonométrie hyperbolique)
np.arcsinh, np.arccosh, np.arctanh
Tableaux numpy.ndarray : généralités
☝ Un tableau T de type numpy.ndarray (« n-dimensional array ») est un conteneur homogène dont les valeurs sont stockées en mémoire de façon séquentielle.
T.ndim  « dimension d » = nombre d'indices (1 pour un vecteur,
2 pour une matrice)
T.shape  « forme » = plages de variation des indices, regroupées en
tuple (n0,n1,…,nd-1) : le premier indice varie de 0 à n0-1 , le deuxième de 0 à n1-1 , etc.
T.size  nombre d'éléments, valant n0  n1 …  nd-1
T.dtype  type des données contenues dans le tableau (np.bool, nb.int32, np.uint8, np.float, np.complex, np.unicode, etc.)
générateurs
T = np.empty(shp,dtype=data_type)  pas d'initialisation
T = np.zeros(shp,dtype=data_type)  tout à 0/False
T = np.ones(shp,dtype=data_type)  tout à 1/True
 Tableaux de même forme que T (même type de données que T
si ce n'est pas spécifié) :
S = np.empty_like(T,dtype=data_type)
S = np.zeros_like(T,dtype=data_type)
S = np.ones_like(T,dtype=data_type)
☝ shp est la forme du tableau créé, data_type le type de données contenues dans le tableau (np.float si l'option dtype n'est pas utilisée)
Conversions
T = np.array(L)  Liste en tableau, type de données automatique
T = np.array(L,dtype=data_type)  Idem, type spécifié
L = T.tolist()  Tableau en liste
new_T = T.astype(data_type) Conversion des données
S = T.flatten()  Conversion en vecteur (la séquence des données telles qu'elles sont stockées en mémoire)
np.unravel_index(nS,T.shape) donne la position dans le tableau T à partir de l'index séquentiel nS (indice dans S)
☝ Le passage maîtrisé list  ndarray permet de bénéficier des avantages des 2 types
 Un vecteur V est un tableau à un seul indice
 Comme pour les listes, V[i] est le (i +1)ème
coefficient, et l'on peut extraire des
sous-vecteurs par : V[:2],
V[-3:], V[::-1], etc.
Si c est un nombre, les opérations
c*V, V/c, V+c, V-c,
V//c, V%c, V**c se font
sur chaque coefficient
Si U est un vecteur de même dimension
que V, les opérations U+V, U-V,
U*V, U/V, U//V, U%V, U**V sont des
opérations terme à terme
 Produit scalaire : U.dot(V) ou np.dot(U,V) ou U@V
Vecteurs
générateurs
np.linspace(a,b,n)
 n valeurs régulière-
ment espacées de a à b (bornes incluses)
np.arange(xmin,xmax,dx)
 de xmin inclus à xmax exclu par pas de dx
B = (T==1.0)
B = (abs(T)<=1.0)  B est un tableau de booléens, de même forme que T
B = (T>0)*(T<1) Par exemple B*np.sin(np.pi*T) renverra un tableau de
sin(p x) pour tous les coefficients x dans ]0,1[ et de 0 pour les autres
B.any(), B.all()  booléen « Au moins un True », « Que des True »
indices = np.where(B)  tuple de vecteurs d'indices donnant les positions des True
T[indices]  extraction séquentielle des valeurs
T.clip(vmin,vmax)  tableau dans lequel les valeurs ont été ramenées entre vmin et vmax
np.allclose(T1,T2)  booléen indiquant si les tableaux sont numériquement égaux
Tableaux booléens, comparaison,tri
Page 3 / 5
Matrices
 Une matrice M est un tableau à deux indices
 M[i,j] est le coefficient de la (i +1)-ième ligne et (j+1)-ième colonne
 M[i,:] est la (i +1)-ième ligne, M[:,j] la (j+1)-ième colonne,
M[i:i+h,j:j+l] une sous-matrice hl
 Opérations : voir Vecteurs
 Produit matriciel : M.dot(V) ou np.dot(M,V) ou M@V
M.transpose(),M.trace()  transposée, trace
☝ Matrices carrées uniquement (algèbre linéaire) :
import numpy.linalg as la ("Linear algebra")
la.det(M), la.inv(M)  déterminant, inverse
vp = la.eigvals(M)  vp vecteur des valeurs propres
vp,P = la.eig(M)  P matrice de passage
la.matrix_rank(M), la.matrix_power(M,p)
X = la.solve(M,V)  Vecteur solution de M X = V
générateurs
np.eye(n)
 matrice identité d'ordre n
np.eye(n,k=d)  matrice carrée d'ordre n avec des 1 décalés de d vers la droite par rap-port à la diagonale
np.diag(V)
 matrice diagona-le dont la diagonale est le vecteur V
Statistiques
T.max(), T.min(), T.sum()
T.argmax(), T.argmin() indices séquentiels des extremums
T.sum(axis=d)  sommes sur le (d-1)-ème indice
T.mean(),T.std(),T.std(ddof=1)moyenne, écart-type
V = np.unique(T) valeurs distinctes, sans ou avec les effectifs
V,N = np.unique(T,return_counts=True)
np.cov(T), np.corrcoef(T) matrices de covariance et de corrélation ; T est un tableau kn qui représente n répétitions du tirage d'un vecteur de dimension k ; ces matrices sont kk.
☝ Sans l'option axis, un tableau est considéré comme une simple séquence de valeurs
Mémento Python 3 pour le calcul scientifique
Aide numpy/scipy
np.info(nom_de_la_fonction)
import scipy.integrate as spi
spi.odeint(F,Y0,Vt)  renvoie une solution numérique du problème de Cauchy Y'(t) = F(Y(t),t) , où Y(t) est un vecteur d'ordre n, avec la condition initiale Y(t0) = Y0, pour les valeurs de t dans le vecteur Vt commençant par t0 , sous forme d'une matrice nk
Intégration numérique
spi.quad(f,a,b)[0] renvoie une évaluation numérique de l'intégrale :