据我所知,np.nanargmin在不是NaN的列表中找到最小的数字。但是,如果调用数组[np.nan, np.inf],则会生成0,即NaN。我发现这种行为很奇怪,我只是想知道用这种方式定义np.argmin的逻辑是什么。
发布于 2017-09-25 08:01:54
如果您查看np.nanargmin的文档,它说:
警告:如果切片只包含NaNs和Infs,则不能信任结果。
如果您查看源代码,它有以下一行:
a, mask = _replace_nan(a, np.inf)因此,它将所有nan事件替换为inf,因此它将找到min (仍然有问题),这将是argmin([inf, inf])。
发布于 2017-09-25 08:05:54
如果您查看来源,就会看到:
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
https://stackoverflow.com/questions/46400111
复制相似问题