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 ?

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

DDD
Libérer: 2024-12-19 18:38:09
original
222 Les gens l'ont consulté

Why Am I Getting a

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

Lorsque vous travaillez avec des tableaux NumPy, il est crucial de prêter attention à formes de tableau pour éviter les erreurs de diffusion. Dans le scénario donné, vous avez rencontré l'erreur "ValueError : les opérandes n'ont pas pu être diffusés avec les formes."

Cette erreur se produit car les opérateurs de NumPy, tels que *, effectuent des opérations par élément par défaut. Cependant, si les tableaux ont des formes différentes, NumPy tente de les diffuser, ce qui peut entraîner des problèmes de compatibilité.

Règles de diffusion et compatibilité

La diffusion implique l'expansion des dimensions d'un ou les deux tableaux pour les rendre compatibles pour les opérations par éléments. Des dimensions de taille 1 ou des dimensions manquantes peuvent être diffusées.

Dans votre cas, X a une forme de (97, 2) et y a une forme de (2, 1). La diffusion des dimensions entraînerait :

  97    2
   2    1
Copier après la connexion

Comme vous pouvez le constater, la première dimension (97 et 2) est en conflit. Selon les règles de diffusion, les dimensions en conflit doivent être identiques ou l'une d'elles doit être 1.

Résoudre l'erreur de diffusion

Pour résoudre ce problème, vous devez vous assurer que les dimensions des tableaux sont compatibles. Dans votre cas, vous pouvez utiliser le produit scalaire de NumPy, qui effectue la multiplication matricielle :

X.dot(y)
Copier après la connexion

La multiplication matricielle suit différentes règles de compatibilité, garantissant que le nombre de colonnes dans le premier tableau correspond au nombre de lignes dans le second. tableau. Puisque X a 2 colonnes et y a 2 lignes, la multiplication matricielle est valide, ce qui donne un vecteur de forme (97, 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!

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