'valeur invalide rencontrée dans l'avertissement à double scalaire', peut-être num PY

quand j'exécute mon code, j'obtiens ces avertissements, toujours par groupes de quatre, sporadiquement. J'ai essayé de localiser la source en plaçant des messages de débogage avant et après certaines déclarations 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

est-ce Est un Numpy avertissement, et qu'est ce qu'un double scalaire?

à Partir de Numpy-je utiliser

min(), argmin(), mean() and random.randn()

j'utilise aussi Matplotlib

41
demandé sur BrechtDeMan 2010-09-22 12:11:21

5 réponses

cela ressemble à une erreur de calcul à virgule flottante. Consultez le numpy.seterr fonction pour obtenir plus d'informations sur l'endroit où elle se produit.

33
répondu eumiro 2010-09-22 08:22:22

dans mon cas, j'ai découvert que c'était la division par zéro.

31
répondu Volod 2017-12-15 14:54:38

parfois NaNs ou les valeurs nulles dans les données vont générer cette erreur avec Numpy. Si vous ingérez des données provenant par exemple d'un fichier CSV ou quelque chose comme ça, et que vous opérez ensuite sur les données en utilisant des tableaux numpy, le problème pourrait provenir de votre ingestion de données. Vous pouvez essayer d'alimenter votre code avec un petit ensemble de données avec des valeurs connues, et voir si vous obtenez le même résultat.

9
répondu Jeff 2010-11-08 17:30:53

Zero-taille du tableau passé à numpy.mean soulève cet avertissement (comme indiqué dans plusieurs commentaires).

Pour certains autres candidats:

  • median augmente également cet avertissement sur un tableau de taille zéro.

les autres candidats ne soulèvent pas cette mise en garde:

  • min,argmin à la fois d'améliorer ValueError sur le tableau vide
  • randn faut *arg; à l'aide de randn(*[]) renvoie un nombre aléatoire simple
  • std,var retour nan sur un tableau vide
3
répondu Dave 2015-11-24 16:10:09

j'ai rencontré un problème similaire - Valeur invalide rencontrée dans ... Après avoir passé beaucoup de temps à essayer de comprendre ce qui est à l'origine de cette erreur, je crois que dans mon cas, il était due à NaN dans mon dataframe. Vérifier travailler avec des données manquantes dans pandas.

Aucun = = Aucun Vrai

np.nan = = np.Nan False

quand NaN n'est pas égal à NaN alors les opérations arithmétiques comme la division et la multiplication provoquent cette erreur.

deux ou trois choses vous pouvez faire pour éviter ce problème:

  1. Utiliser la mp.set_option pour définir le nombre de décimales à prendre en compte dans votre analyse, pour un infinitesmall nombre ne déclenchent pas de problème similaire - ('affichage.float_format', lambda x:'%.3f' % x).

  2. utilisez df.round() pour arrondir les chiffres, alors Panda gouttes les derniers chiffres de l'analyse. Et le plus important,

  3. mettre NaN à zéro df=df.fillna (0). Attention si on remplit NaN de zéro. ne s'applique pas à vos ensembles de données parce que cela traitera l'enregistrement comme zéro so N dans la moyenne, std etc change également.

1
répondu S_Dhungel 2016-08-28 13:38:15