在Python,MATLAB 等编程语言里缺失值通常用 NaN 来表示,NaN 是 Not a Number 的缩写。
![]() |
| 维基百科对 NaN 的解释 |
假如有三个数,分别是 10、20 和 NaN,对它们求和,忽略 NaN 的求和(例如 Python 里的 numpy.nansum),那么毫无意外地,得到的值为 10 + 20 = 30
假如三个数全是 NaN,那么求和结果是?我们可能预期得到 NaN,但实际上,程序计算结果为0!
关于计算结果应当为 0 还是 NaN,网上有一些讨论,具体可参见上图中的链接,这里不详细展开。
我个人更倾向于返回值为 NaN。因为返回结果是 0 的话,我并不知道到底是原来有值,例如1、0、-1,然后加总等于0,还是因为三个数全是 NaN 导致计算结果为 0
另外,除了和为0,一组 NaN 的乘以等于 1,而非 NaN,这点也需要注意。





