用了好多次了,记一下
如果要计算一个数组中存在无效值的统计量如mean,numpy提供了nanmean对数据中出现np.nan进行处理。但有时使用numpy.ma.masked_where将该值masked了,这时候mean和nanmean都可以得到相同的想要的结果,下面是代码
a=numpy.array([0.0,1,5,999]) b=numpy.ma.masked_equal(a,999) c=b.filled(numpy.nan) numpy.mean(a) #(0+1+5+999)/4 251.25 numpy.mean(b) #(0+1+5)/3 numpy.nanmean(b) #(0+1+5)/3 2.0 numpy.mean(c) #参与了np.nan所以没有忽略nan的话计算出现错误 nan numpy.nanmean(c) #(0+1+5)/3 2.0
可以看到,只有使用np.nan填充了,计算统计量时需要考虑numpy.nan函数,如果使用mask的话,则可以随意使用两个函数,结果都是对的



