【问题标题】:Python - min() max() of list with NaN values [duplicate]Python - 具有 NaN 值的列表的 min() max() [重复]
【发布时间】:2020-01-22 16:50:56
【问题描述】:

谁能告诉我为什么当 NaN 是列表的第一个元素时,使用 min(list) 在列表中查找最小值不起作用?使用 max(list) 时也是如此

import math

y = [float('nan'),1,2,3,0,float('nan'),6,7,8,9]
print(y)
print(math.isnan(y[0]))
print(min(y))


w = [10,1,2,3,0,float('nan'),6,7,8,9]
print(w)
print(min(w))
print(math.isnan(w[5]))

【问题讨论】:

  • 是的。谢谢。

标签: python python-3.x spyder


【解决方案1】:

任何对 nan 与数字进行比较的操作都将返回 False

print(y[1] > y[0])
print(y[1] < y[0])

结果

False
False

如果内置函数在比较元素时遵循相同的逻辑,则上述行为很容易解释。如果第一个元素被选为最小元素,那么之后的任何比较都将为 False,因此返回 nan 作为最小元素。

【讨论】:

    【解决方案2】:

    您可以过滤yw 以忽略nan

    print(min(i for i in y if not math.isnan(i)))
    # 0
    

    【讨论】:

    • 虽然这是真的,但我不认为它回答了 OP 关于 为什么 它不起作用的问题,这与 python 如何将元素与 NaN 进行比较有关跨度>
    猜你喜欢
    • 2018-02-04
    • 2017-09-23
    • 1970-01-01
    • 2021-09-11
    • 2018-04-18
    • 2017-11-07
    • 2018-01-30
    • 1970-01-01
    • 2019-05-30
    相关资源
    最近更新 更多