Python 每次我对浮动列表(具有nan值)进行排序时,都会得到不同的列表
我尝试在python中对浮点(和nan值)列表进行排序,如下所示:Python 每次我对浮动列表(具有nan值)进行排序时,都会得到不同的列表,python,list,Python,List,我尝试在python中对浮点(和nan值)列表进行排序,如下所示: print max(list) list.sort() list.reverse() for i in range(100): print list[i] nan nan 2.0803176458 nan nan 23.1620761136 15.9680303803 15.3134388394 14.68055076 11.450492644 8.96268420227 8.15331554187 5.24420616
print max(list)
list.sort()
list.reverse()
for i in range(100):
print list[i]
nan
nan
2.0803176458
nan
nan
23.1620761136
15.9680303803
15.3134388394
14.68055076
11.450492644
8.96268420227
8.15331554187
5.24420616524
3.9665322752
3.69758305442
1.08500491226
-0.227894225141
-0.254784399765
-0.866879940573
-1.21267324819
-2.21811678021
nan
nan
2.69325878444
当我运行它时,我最多会得到不同的值,并且当它打印出来时,我的列表没有排序(结果在上面的代码下面)
有人知道为什么会发生这种情况吗?这是因为
nan
无法与任何其他对象(甚至自身)进行比较
>>> float('nan') < 3.14
False
>>> float('nan') > 3.14
False
>>> float('nan') < float('nan')
False
>>> float('nan') > float('nan')
False
>>> float('nan') == float('nan')
False
用于正确处理nan
:
>>> import numpy as np
>>> arr = np.array(nums)
>>> np.sort(arr)
array([ -2.21811678, -1.21267325, -0.86687994, -0.2547844 ,
-0.22789423, 1.08500491, 2.08031765, 2.69325878,
3.69758305, 3.96653228, 5.24420617, 8.15331554,
8.9626842 , 11.45049264, 14.68055076, 15.31343884,
15.96803038, 23.16207611, nan, nan,
nan, nan, nan, nan])
>>> np.nanmax(arr)
23.162076113600001
>>> np.nanmin(arr)
-2.2181167802099999
阅读
>>> x = float('nan')
>>> y = x
>>> y == x
False
>>> import numpy as np
>>> arr = np.array(nums)
>>> np.sort(arr)
array([ -2.21811678, -1.21267325, -0.86687994, -0.2547844 ,
-0.22789423, 1.08500491, 2.08031765, 2.69325878,
3.69758305, 3.96653228, 5.24420617, 8.15331554,
8.9626842 , 11.45049264, 14.68055076, 15.31343884,
15.96803038, 23.16207611, nan, nan,
nan, nan, nan, nan])
>>> np.nanmax(arr)
23.162076113600001
>>> np.nanmin(arr)
-2.2181167802099999