Maison >développement back-end >Tutoriel Python >Pourquoi est-ce que j'obtiens une erreur « ValueError : les opérandes n'ont pas pu être diffusés ensemble » dans les opérations NumPy Element-Wise ?
Problèmes de diffusion dans les opérations par éléments NumPy
Lors de l'utilisation d'opérations par éléments avec des tableaux NumPy de formes différentes, il est possible de rencontrer le erreur "ValueError : les opérandes n'ont pas pu être diffusés avec les formes." Cette erreur indique que les dimensions des tableaux sont incompatibles pour l'opération correspondante.
Diffusion dans les opérations NumPy Element-Wise
La diffusion permet d'étendre un ou les deux tableaux dans leurs dimensions pour les rendre compatibles pour une opération par élément. Les dimensions de valeur 1 ou manquantes peuvent être utilisées en diffusion, permettant de multiplier des tableaux de formes différentes par élément.
Exemple d'erreur
Considérez le code suivant, où X est un tableau de forme (m,n) et y est un tableau de forme (n,1) :
X * y
Ce code générera un ValueError car les dimensions sont incompatibles :
(97,2) x (2,1)
Multiplication matricielle vs multiplication par élément
Dans NumPy, l'opérateur astérisque (*) est utilisé pour l'élément- multiplication intelligente, tandis que la fonction dot() est utilisée pour la multiplication matricielle. La multiplication matricielle nécessite des dimensions compatibles, tandis que la multiplication par éléments nécessite des dimensions qui peuvent être diffusées ensemble.
Résolution
Pour résoudre l'erreur, vous pouvez utiliser le point() fonction pour effectuer une multiplication matricielle :
X.dot(y)
Vous pouvez également modifier les formes des tableaux avant l'opération par élément pour vous assurer qu'ils sont diffusable.
Notes supplémentaires
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!