在蒙面数组的情况下,我对numpy.median的输出有点困惑。这是一个简单的例子(假设导入了numpy - 我有1.6.2版本):
>>> a = [3.0, 4.0, 5.0, 6.0, numpy.nan]
>>> am = numpy.ma.masked_array(a, [numpy.isnan(x) for x in a])
在计算中值时,我希望能够使用蒙面数组忽略数组中的nan
值。这适用于使用掩码数组的numpy.mean
或mean()
方法:
>>> numpy.mean(a)
nan
>>> numpy.mean(am)
4.5
>>> am.mean()
4.5
然而,对于中位数我得到:
>>> numpy.median(am)
5.0
但是我希望更像这样的结果:
>>> numpy.median([x for x in a if not numpy.isnan(x)])
4.5
,遗憾的是masked_array
没有median
方法。
答案 0 :(得分:11)
在np.ma.median
上使用MaskedArray
。
[说明:如果我没记错的话,np.median
不支持子类,因此无法在np.ma.MaskedArray
上正常工作。]