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 ?

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 ?

Susan Sarandon
Libérer: 2024-12-08 20:29:15
original
646 Les gens l'ont consulté

Why Do I Get a

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
Copier après la connexion

Ce code générera un ValueError car les dimensions sont incompatibles :

(97,2) x (2,1)
Copier après la connexion

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)
Copier après la connexion

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

  • Si les deux tableaux sont de type numpy.matrix, l'opérateur astérisque peut être utilisé pour la multiplication matricielle.
  • Lorsque vous utilisez dot() sur des tableaux de formes incompatibles, vous recevrez une "ValueError : les matrices ne sont pas aligné."
  • Pour une explication complète des règles de diffusion, reportez-vous à la documentation 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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal