使用float('nan')来表示缺失值 - 安全吗?

时间:2010-10-29 16:41:21

标签: python floating-point python-3.x

Python 3.1

我正在对缺少值的数据进行一些计算。任何涉及缺失值的计算都会导致缺失值。

我正在考虑使用float('nan')来表示缺失值。安全吗?最后我会检查

def is_missing(x):
  return x!=x # I hope it's safe to use to check for NaN

看起来很完美,但我在文档中找不到明确的确认。

我当然可以使用“无”,但这需要我使用try / except TypeError进行每次计算才能检测到它。我也可以使用Inf,但我更不确定它的工作原理。

编辑:

@MSN我明白使用NaN很慢。但如果我的选择是:

# missing value represented by NaN
def f(a, b, c):
  return a + b * c

# missing value represented by None
def f(a, b, c):
  if a is None or b is None or c is None:
    return None
  else:
    return a + b * c

我认为NaN选项仍然更快,不是吗?

1 个答案:

答案 0 :(得分:1)

这是安全的,但是如果FPU必须触摸x它可能会非常慢(因为某些硬件将NaN视为一种特殊情况):Is it a good idea to use IEEE754 floating point NaN for values which are not set?