Piège
Numpy expose deux classes : ndarray (le standard, ce que le notebook utilise) et matrix (déprécié depuis 2017). Sur matrix, * fait le produit matriciel — l'inverse de ndarray. Coller du vieux code utilisant np.matrix dans un notebook moderne casse silencieusement la sémantique de *. Toujours utiliser np.array/ndarray.