numpy.max
和max
之间有什么区别?我的理解是使用numpy.max
的主要优点是它可以处理多维数组,但是它们在以下方面表现不同:
In [1]: import numpy as np
In [2]: max([1, float('nan')])
Out[2]: 1
In [3]: max([float('nan'), 1])
Out[3]: nan
In [4]: np.max([1, float('nan')])
Out[4]: nan
In [5]: np.max([float('nan'), 1])
Out[5]: nan
这表明numpy.max
和max
对待"最大"的基本理念。换句话说,至少在某些边缘情况下,例如这样。有两个函数采用不同约定的原因,特别是为什么max
的行为取决于排序?
答案 0 :(得分:1)
nan
无法比较;以下全部返回False
:
1 < float('nan')
1 > float('nan')
float('nan') < 1
float('nan') > 1
如果您假设它的工作方式如下,则可以解释max
的行为:假设列表中的第一个元素是最大的,将当前最大元素与列表中的下一个元素进行比较,并采用下一个元素元素if next > current
。由于与float('nan')
的比较总是会返回False
,如果它是比较的左手操作数,max
会认为它是最大的元素,但如果它是正确的,则认为它是最小的 - 手操作。
np.max
的行为似乎通过返回涉及nan
的任何操作来正确处理nan
。也就是说,nan
不仅是任何列表的最大值,还包括最小值,中值,或总和,或产品等。