我需要一個從數組中返回非NaN值的函數。目前我做這種方式:numpy中的「isnotnan」功能,這可以更pythonic?
>>> 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
,如果你知道一個更好的方法請分享, 謝謝
注意:如果你想使用isnotnan來過濾熊貓,這是要走的路。 – 2016-01-13 20:12:45
@CharlieHayley不會'pd.notnull()'是大熊貓更好的選擇嗎? – 2018-02-27 22:16:44
@JoshD。我檢查了代碼,pd.notnull()用於測試* objects *而不是數值,如果對象數組中的對象不是對象的實例,則返回負數。它將比np.isfinite()慢,但能夠處理任意對象數組(例如列表數組)。整潔的發現,如果你的數組可能包含任意對象,這是一個好主意。我認爲如果你可以確信你的數組通常是數字的,除了NaN和INF,那麼np.isfinite會更快,所以取決於用例。感謝您提出這個問題,我不認爲這是在發佈答案時。 – 2018-03-01 18:20:07