web-dev-qa-db-fra.com

ValueError: incompatibilité de forme: les objets ne peuvent pas être diffusés dans une seule forme

J'utilise la méthode pearsonr(x,y) de SciPy et je ne peux pas comprendre pourquoi l'erreur suivante se produit:

ValueError: incompatibilité de forme: les objets ne peuvent pas être diffusés dans une seule forme

Il calcule les deux premiers (j'exécute plusieurs milliers de ces tests en boucle) puis meurt. Quelqu'un at-il une idée de ce que pourrait être le problème?

r_num = n*(np.add.reduce(xm*ym))

c'est la ligne de la méthode pearsonr sur laquelle l'erreur se produit, toute aide serait très appréciée.

22
Alex Brashear

Cette erreur particulière implique que l'une des variables utilisées dans l'arithmétique sur la ligne a une forme incompatible avec une autre sur la même ligne (c'est-à-dire à la fois différente et non scalaire). Puisque n et la sortie de np.add.reduce() sont tous deux scalaires, cela implique que le problème réside dans xm et ym, les deux étant simplement votre x et y entrées moins leurs moyennes respectives.

Sur cette base, je suppose que vos entrées x et y ont des formes différentes l'une de l'autre, les rendant incompatibles pour une multiplication par élément.

** Techniquement, ce n'est pas que les variables sur la même ligne ont des formes incompatibles. Le seul problème est lorsque deux variables ajoutées, multipliées, etc., ont des formes incompatibles, que les variables soient temporaires (par exemple, sortie de fonction) ou non. Deux variables avec des formes différentes sur la même ligne sont correctes tant que quelque chose d'autre corrige le problème avant que l'expression mathématique ne soit évaluée.

26
AMacK