2016-12-13 1 views
2

Ce qui suit est une question philosophique visant à comprendre pourquoi xarrays est la façon dont il est. J'ai des difficultés à trouver la manière de Xarrays de faire ce qui suit:Pourquoi la valeur 'invalide rencontrée dans un plus grand' avertissement est-elle lancée dans python xarray pour nan? Le nan ne devrait-il pas se déplacer sans problème?


positive_values = values.where(values > 0) 

Il suit la syntaxe de xarrays, et calcule ce que je veux faire en utilisant xarrays, mais cet avertissement jette Runtime.

RuntimeWarning: invalid value encountered in greater if not reflexive 

Ma question est, comment suis-je abusaient Xarrays?

Je voudrais faire valoir que nans sont excellents dans le sens où ils font la navette entre les opérations. (Il est facile de repérer ou de gérer les valeurs de données manquantes)

IE. Cela rend leur représentation très utile dans les tableaux X. xarrays peut avoir des données manquantes, mais cela ne devrait pas arrêter une opération sur des milliers de points.

Pourquoi > ne commute pas le nan sans problème? Est-ce que je devrais faire ceci d'une autre manière et ignorer l'erreur si c'est le comportement que je veux?

+0

Pas de réponse, juste un commentaire pour ce que ça vaut: 'nan' nan' nan' (ie 'nan' ==' nan' est 'False'), donc un 'nan' viole la propriété réflexive de l'égalité. C'est peut-être ce à quoi le message d'erreur fait référence. –

+0

Pouvez-vous fournir un exemple reproductible? – Maximilian

Répondre

5

Ce n'était pas un choix de conception intentionnel et devrait être corrigé.

NumPy émet des avertissements lorsque vous faites des comparaisons avec NaN, parce que le résultat peut être surprenant, du moins si vous n'êtes pas familier avec la façon dont les comparaisons avec le travail NaN:

In [6]: np.array([1, -1, np.nan]) > 0 
/Users/shoyer/conda/envs/xarray-dev/bin/ipython:1: RuntimeWarning: invalid value encountered in greater 
    #!/Users/shoyer/conda/envs/xarray-dev/bin/python 
Out[6]: array([ True, False, False], dtype=bool) 

On peut dire que, il serait plus intuitif si le résultat était quelque chose comme [True, False, NA], mais NumPy n'a pas de support de valeur manquante intégrée.

Jusqu'à récemment (dans pandas 0.19), les pandas réduisaient à néant les avertissements NumPy de ce type pour toutes les opérations - que l'opération ait été effectuée ou non avec des pandas. Parce que xarray importe des pandas, cela signifiait que ces erreurs étaient aussi réduites pour les opérations xarray. Maintenant, nous aurons besoin d'ajouter notre propre code pour faire taire ces avertissements.

Mise à jour: Cela doit être résolu à partir de xarray v0.10. Si vous êtes encore en train de le rencontrer, s'il vous plaît déposer un bug au http://github.com/pydata/xarray/issues