In [19]: 1>float('nan')
Out[19]: False
In [20]: float('nan')>1
Out[20]: False
Число с плавающей запятой nan
не больше и не меньше целого числа 1
.
max
начинается с выбора первого элемента и заменяет его только тогда, когда он находит элемент, который строго больше.
In [31]: max(1,float('nan'))
Out[31]: 1
Поскольку nan
не больше 1, возвращается 1.
In [32]: max(float('nan'),1)
Out[32]: nan
Поскольку 1 не больше nan
, возвращается nan
.
PS. Обратите внимание, что 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.nan
s, вы можете использовать np.nanmax
:
In [93]: np.nanmax([1,float('nan')])
Out[93]: 1.0
In [94]: np.nanmax([float('nan'),1])
Out[94]: 1.0