什么可能导致numpy.nanstd()返回nan?

我有一个相对较大的1-D阵列(20000个观测值).当我计算诸如标准偏差,平均值,总和之类的解释性统计数据时,我得到了纳米值,但是当我从同一个数组计算出一个percintle时,我得到了我期望的值.我尝试过numpy.nanstd,nanmean等功能.我能做错什么?我正在使用
python 2.7.9 最佳答案 在三种情况下,
np.nanstd可能会返回NaN:

>如果输入为空
>如果输入中的所有元素都是NaN
>如果其中一个元素是正无穷大或负无穷大.要理解为什么会发生这种情况,请记住标准偏差的公式是

由于x包含inf,因此x的平均值也将为inf.因此,在计算与均值的偏差时,至少有一个元素等于inf-inf.如果您在IPython提示符下尝试此操作,您将看到inf-inf被定义为NaN.

在前两种情况下,您应该收到有用的警告:

RuntimeWarning: Degrees of freedom <= 0 for slice.
点赞