gpt4 book ai didi

Python:最大/最小内置函数取决于参数顺序

转载 作者:行者123 更新时间:2023-11-28 19:13:05 28 4
gpt4 key购买 nike

max(float('nan'), 1) 计算结果为 nan

max(1, float('nan')) 计算结果为 1

这是预期的行为吗?


感谢您的回答。

max 在 iterable 为空时引发异常。当 nan 存在时,为什么 Python 的 max 不会引发异常?或者至少做一些有用的事情,比如返回 nan 或忽略 nan。目前的行为非常不安全,看起来完全不合理。

我发现了这种行为的一个更令人惊讶的结果,所以我刚刚发布了一个 related question .

最佳答案

In [19]: 1>float('nan')
Out[19]: False

In [20]: float('nan')>1
Out[20]: False

float nan 既不大于也不小于整数 1max 从选择第一个元素开始,并且仅在找到一个严格更大的元素时才替换它。

In [31]: max(1,float('nan'))
Out[31]: 1

由于 nan 不大于 1,因此返回 1。

In [32]: max(float('nan'),1)
Out[32]: nan

由于 1 不大于 nan,因此返回 nan


附言。请注意,np.max 以不同方式对待 float('nan'):

In [36]: import numpy as np
In [91]: np.max([1,float('nan')])
Out[91]: nan

In [92]: np.max([float('nan'),1])
Out[92]: nan

但是如果你想忽略np.nans,你可以使用np.nanmax:

In [93]: np.nanmax([1,float('nan')])
Out[93]: 1.0

In [94]: np.nanmax([float('nan'),1])
Out[94]: 1.0

关于Python:最大/最小内置函数取决于参数顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37548239/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com