Piège
L'apprenant MPSI tend à voir np.array([1,2,3]) comme un vecteur colonne $\mathbb{R}^3$ qu'il pourrait transposer pour obtenir un vecteur ligne. C'est faux : un tableau 1D Numpy n'a pas d'orientation, sa shape est (3,) (un seul axe), et .T est l'identité dessus. Pour obtenir un vrai vecteur colonne il faut écrire np.array([[1],[2],[3]]) (shape (3,1)) ou .reshape(-1,1). Cette confusion casse silencieusement les calculs matriciels par broadcasting non désiré.