J'ai besoin d'une fonction qui renvoie des valeurs non-NaN d'un tableau. Actuellement, je fais de cette façon:fonctionnalité "isnotnan" en numpy, cela peut-il être plus pythonique?
>>> a = np.array([np.nan, 1, 2])
>>> a
array([ NaN, 1., 2.])
>>> np.invert(np.isnan(a))
array([False, True, True], dtype=bool)
>>> a[np.invert(np.isnan(a))]
array([ 1., 2.])
Python: 2.6.4 numpy: 1.3.0
S'il vous plaît partager si vous connaissez une meilleure façon, Merci
Note: Si vous voulez utiliser isnotnan pour filtrer les pandas, c'est la voie à suivre. –
@CharlieHayley ne serait pas "pd.notnull()" être une bien meilleure option pour les pandas? –
@JoshD. J'ai vérifié le code et pd.notnull() est pour tester * objets * au lieu de valeurs numériques, renvoyant négatif si un objet dans un tableau d'objet n'est pas une instance d'un objet. Il sera plus lent que np.isfinite() mais est capable de gérer des tableaux d'objets arbitraires (par exemple des tableaux de listes). Une bonne recherche, et une bonne idée si votre tableau peut inclure des objets arbitraires. Je pense que si vous pouvez être sûr que votre tableau est généralement numérique, sauf pour NaN et INF, alors np.isfinite serait plus rapide, donc dépend du cas d'utilisation. Merci d'avoir soulevé la question, je ne pense pas que c'était à l'époque où la réponse a été affichée. –