`np.nanargmin([np.nan,np.inf])= 0`背后的逻辑

时间:2017-09-25 07:53:18

标签: python python-3.x numpy

我理解np.nanargmin找到列表中不是NaN的最小数字。但是,如果调用数组[np.nan, np.inf],它会产生0,这是一个NaN。我觉得这种行为很奇怪,我只是想知道用这种方式定义np.argmin的逻辑是什么。

2 个答案:

答案 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