Maison >développement back-end >Tutoriel Python >Tableaux NumPy : quelle est la différence entre la forme (R, 1) et (R,) et comment cela affecte-t-il la multiplication matricielle ?
Dans NumPy, vous pouvez rencontrer des tableaux avec des formes (R, 1) et (R,). Bien que ces formes puissent sembler similaires, elles représentent différentes interprétations des données sous-jacentes.
Un tableau de forme (R, 1) est un tableau 2D avec R lignes et une seule colonne. Il s'agit essentiellement d'un vecteur colonne, qui peut être considéré comme une liste d'éléments R. En revanche, un tableau de forme (R,) est un tableau 1D avec R éléments. Il s'agit en fait d'une liste, chaque élément représentant une valeur scalaire.
Le choix de conception de NumPy de ne pas favoriser (R, 1) 1) les formes de multiplication matricielle découlent de leur flexibilité inhérente. Autoriser les deux formes permet aux programmeurs de choisir la représentation la plus appropriée pour leurs tâches spécifiques. Alors que les formes (R, 1) sont plus pratiques pour la multiplication matricielle, les formes (R,) peuvent être préférables dans d'autres contextes, par exemple lorsque vous travaillez avec des vecteurs ou des listes de valeurs scalaires.
Sans remodeler explicitement les tableaux, il existe des approches alternatives pour effectuer une multiplication matricielle. Par exemple, l'utilisation de la fonction np.expand_dims() peut obtenir la transformation de forme souhaitée. Alternativement, vous pouvez profiter de la diffusion, que NumPy effectue automatiquement sous certaines conditions. Par exemple, dans l'expression numpy.dot(M[:,0], numpy.ones((1, R))), la diffusion étendra automatiquement numpy.ones((1, R)) en numpy.ones((R , 1)).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!