Lorsque je lance mon code, je reçois ces avertissements, toujours par groupes de quatre, de façon sporadique. J'ai essayé de localiser la source en plaçant des messages de débogage avant et après certaines instructions pour identifier son origine.
Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars
S'agit-il d'un avertissement Numpy et qu'est-ce qu'un double scalaire?
De Numpy j'utilise
min(), argmin(), mean() and random.randn()
J'utilise aussi Matplotlib
Cela ressemble à une erreur de calcul en virgule flottante. Vérifiez la fonction numpy.seterr pour obtenir plus d'informations sur l'endroit où cela se produit.
Dans mon cas, j'ai découvert qu'il s'agissait d'une division par zéro.
Parfois, les valeurs NaN ou NULL dans les données génèrent cette erreur avec Numpy. Si vous importez des données à partir d'un fichier CSV, par exemple, et que vous utilisez les données à l'aide de tableaux numpy, le problème pourrait provenir de votre acquisition de données. Vous pouvez essayer de fournir à votre code un petit ensemble de données avec des valeurs connues et voir si vous obtenez le même résultat.
Un tableau de taille zéro passé à numpy.mean
Déclenche cet avertissement (comme indiqué dans plusieurs commentaires).
Pour d'autres candidats:
median
lève également cet avertissement sur un tableau de taille zéro.les autres candidats ne lisent pas cet avertissement:
min,argmin
Les deux lèvent ValueError
sur un tableau viderandn
prend *arg
; using randn(*[])
renvoie un seul nombre aléatoirestd,var
Renvoie nan
sur un tableau videJ'ai rencontré un problème similaire - Valeur non valide rencontrée dans ... Après avoir passé beaucoup de temps à essayer de comprendre la cause de cette erreur, je pense que dans mon cas, cela était dû à NaN dans mon cadre de données. Découvrez comment travailler avec les données manquantes dans les pandas.
Aucun == Aucun Vrai
np.nan == np.nan Faux
Lorsque NaN n'est pas égal à NaN, des opérations arithmétiques telles que la division et la multiplication sont à l'origine de cette erreur.
Quelques choses que vous pouvez faire pour éviter ce problème:
Utilisez pd.set_option pour définir le nombre de décimales à prendre en compte dans votre analyse afin qu'un nombre infinitesmall ne pose pas le même problème - ('display.float_format', lambda x: '% .3f'% x).
Utilisez df.round () pour arrondir les nombres afin que Panda supprime les chiffres restants de l'analyse. Et, surtout,
Définissez NaN à zéro df = df.fillna (0). Faites attention si l'option Remplir NaN avec zéro ne s'applique pas à vos ensembles de données, car cela traitera l'enregistrement comme étant égal à zéro, de sorte que N dans la moyenne, std, etc. change également.
Lorsque vous travaillez avec des importations csv, essayez d'utiliser df.dropna () pour éviter tous ces avertissements ou erreurs.
Je rencontre ceci alors que je calculais np.var(np.array([]))
. np.var
divisera la taille du tableau qui est zéro dans ce cas.