Maison > développement back-end > Tutoriel Python > Pourquoi est-ce que j'obtiens une erreur « Les opérandes n'ont pas pu être diffusés ensemble » dans NumPy et comment puis-je y remédier ?

Pourquoi est-ce que j'obtiens une erreur « Les opérandes n'ont pas pu être diffusés ensemble » dans NumPy et comment puis-je y remédier ?

Barbara Streisand
Libérer: 2024-12-11 14:12:11
original
381 Les gens l'ont consulté

Why Do I Get a

Diffusion dans Numpy : Comprendre l'erreur « Les opérandes n'ont pas pu être diffusés ensemble »

La bibliothèque numpy fournit des structures de données et des opérations puissantes pour les calculs. Une opération courante est la multiplication matricielle, qui peut être effectuée à l’aide de l’opérateur *. Cependant, lorsque vous tentez de multiplier deux tableaux de formes différentes, vous pouvez rencontrer l'erreur suivante :

ValueError: operands could not be broadcast together with shapes (97,2) (2,1)
Copier après la connexion

Pour comprendre cette erreur, nous devons d'abord approfondir le concept de diffusion dans numpy. La diffusion permet d'utiliser des tableaux de formes différentes dans des opérations en agrandissant ou en répliquant les dimensions pour qu'elles correspondent aux dimensions de l'autre tableau.

Dans l'exemple fourni, le tableau X a la forme (97, 2), indiquant qu'il a 97 lignes et 2 colonnes. Le tableau y a la forme (2, 1), indiquant qu'il comporte 2 lignes et 1 colonne. Lors de l'exécution de X * y, une ValueError est générée car ces formes ne peuvent pas être diffusées ensemble. Le problème se pose car il y a un conflit dans la première dimension : X a 97 éléments, alors que y n'en a que 2. La diffusion ne peut pas résoudre ce conflit, donc l'opération échoue.

Alternativement, nous pouvons utiliser l'opérateur de produit scalaire. (numpy.dot) pour la multiplication matricielle. Le produit scalaire est spécialement conçu pour la multiplication matricielle et gère correctement la diffusion. Dans l'exemple corrigé, X.dot(y) renvoie un vecteur de forme (97, 1), comme souhaité.

En comprenant les règles de diffusion et en utilisant le bon opérateur de multiplication matricielle, nous pouvons efficacement effectuez des opérations numériques et évitez l'erreur "Les opérandes n'ont pas pu être diffusés ensemble" dans numpy.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal