我理解np.nanargmin
找到列表中不是NaN的最小数字。但是,如果调用数组[np.nan, np.inf]
,它会产生0
,这是一个NaN。我觉得这种行为很奇怪,我只是想知道用这种方式定义np.argmin
的逻辑是什么。
答案 0 :(得分:1)
如果您查看np.nanargmin
的文档,请说:
警告:如果切片仅包含NaN和Infs,则无法信任结果。
如果您查看源代码,则它包含以下行:
a, mask = _replace_nan(a, np.inf)
因此,它正在用nan
替换所有inf
次出现,因此它会找到min(仍有点疑问),这将是argmin([inf, inf])
。
答案 1 :(得分:1)
如果您查看source,则会看到:
a, mask = _replace_nan(a, np.inf)
res = np.argmin(a, axis=axis)
意味着它将np.nan
替换为np.inf
。由于重复值的np.argmin
会返回该值的第一个实例,np.argmin([np.inf, np.inf])
会返回0