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
Susan Sarandonoriginal
2024-12-08 20:29:15618parcourir

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

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

  • 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:
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