web-dev-qa-db-fra.com

'valeur non valide rencontrée dans l'avertissement double_scalars', éventuellement numpy

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

55
Theodor

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.

42
eumiro

Dans mon cas, j'ai découvert qu'il s'agissait d'une division par zéro.

42
Volod

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.

10
Jeff

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 vide
  • randn prend *arg; using randn(*[]) renvoie un seul nombre aléatoire
  • std,var Renvoie nan sur un tableau vide
4
Dave

J'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:

  1. 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).

  2. Utilisez df.round () pour arrondir les nombres afin que Panda supprime les chiffres restants de l'analyse. Et, surtout,

  3. 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.

1
S_Dhungel

Lorsque vous travaillez avec des importations csv, essayez d'utiliser df.dropna () pour éviter tous ces avertissements ou erreurs.

0
Abhinav Bangia

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.

0
李悦城