Numpy en douceur : shape, axis et @
Voir un tableau avant de calculer vectorisé.
Shape et axis
import numpy as np
X = np.array([[1., 2.], [3., 4.], [5., 6.]])
print(X.shape) # (3, 2) : 3 lignes, 2 colonnes
print(X[0]) # [1. 2.] : première ligne, indice 0
print(X[:, 0]) # [1. 3. 5.] : : = toutes les lignes, colonne 0
print(X.mean(axis=0)) # [3. 4.] : moyenne le long des lignes, par colonne
axis=0 = écrase les lignes (moyenne par colonne), axis=1 = écrase les colonnes (moyenne par ligne). (3,) = vecteur de 3 nombres, (3, 1) = colonne de 3 lignes : même contenu, forme différente, erreurs garanties si on mélange.
@ et broadcast
@ = produit matriciel (combinaisons pondérées en une ligne, détaillé au chapitre algèbre) :
w = np.array([2., 1.])
print(X @ w) # [4. 10. 16.] : une prédiction par ligne
Broadcast = numpy étire tout seul la petite forme sur la grande, dimensions comparées depuis la droite :
print(X + np.array([10., 20.])) # ajoute [10, 20] à chaque ligne
reshape(-1, 1) = mets en colonne, -1 veut dire devine cette taille. Règle d'or du cursus : toujours afficher shape avant @.
Pas de correction en ligneConfrontez votre code aux résultats attendus du cours.