我有一个比较大的一维阵列(20000次观测).当我计算标准偏差、平均值、和等统计数据时,我得到了nan值,但是当我从同一个数组计算出一个扰动时,我得到了我所期望的值。我尝试了一些函数,比如numpy.nanstd、nanmean。我做错什么了?我正在使用python 2.7.9
发布于 2015-03-10 10:00:01
有三种情况下np.nanstd
可能返回NaN
因为x包含inf,所以x的平均值也是inf。因此,在计算偏离平均值时,至少有一个元素等于inf。如果您在IPython提示符下尝试这样做,您将看到inf - inf被定义为NaN。
在前两种情况下,您应该得到一个有用的警告:
RuntimeWarning: Degrees of freedom <= 0 for slice.
发布于 2020-05-13 20:09:18
np.nanstd的inf输出的另一个可能解释是Numpy数据类型用于存储数据。见下面的例子:
import numpy as np
a = np.array([1239., 1485., 63., 393., 37., 1186., 13., 402., 404., 915.], dtype='float16')
print(np.nanstd(a)) # returns inf
a = a.astype('float32')
print(np.nanstd(a)) # returns 519.87177
https://stackoverflow.com/questions/28954429
复制相似问题