繁体   English   中英

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

[英]The logic behind `np.nanargmin([np.nan, np.inf]) = 0`

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

如果您查看np.nanargmin的文档,它会说:

警告:如果切片仅包含 NaN 和 Inf,则结果不可信。

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

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

所以它用inf替换所有nan出现,然后它找到 min (仍然有点问题),这将是argmin([inf, inf])

如果您查看源代码,您会看到:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM