2017-09-25 79 views
2

我知道np.nanargmin找到列表中不是NaN的最小數字。然而,如果在數組[np.nan, np.inf]上調用它,則產生0,它是NaN。我覺得這種行爲很奇怪,我只是想知道這樣定義np.argmin的邏輯是什麼。'np.nanargmin([np.nan,np.inf])= 0'後面的邏輯

+0

這*是*在[文檔]提及(https://docs.scipy.org/doc/numpy-1.13.0/reference/ generated/numpy.nanargmin.html) - 「警告:如果一個切片僅包含NaN和Infs,則結果不可信」 - 儘管有記錄,但仍然令人驚訝。 – user2357112

回答

1

如果你看一下文檔np.nanargmin它說:

警告:如果片只包含NaN和INFS結果不能被信任。

如果您查看源代碼,它有以下行:

a, mask = _replace_nan(a, np.inf) 

因此它與inf更換所有nan出現,所以那是找到分鐘(還是有點懷疑),這將是argmin([inf, inf])

1

如果您在source看你看:

a, mask = _replace_nan(a, np.inf) 
res = np.argmin(a, axis=axis) 

這意味着它與np.inf更換np.nan。由於np.argmin爲重複的值返回該值的第一個實例,np.argmin([np.inf, np.inf])返回0