在蒙面数组上使用numpy.median

Pau*_*man 8 python numpy

在蒙面数组的情况下,我对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])
Run Code Online (Sandbox Code Playgroud)

我希望能够nan在计算中值时使用掩码数组来忽略数组中的值.这适用于使用掩码数组的任numpy.meanmean()方法或方法:

>>> numpy.mean(a)
nan
>>> numpy.mean(am)
4.5
>>> am.mean()
4.5
Run Code Online (Sandbox Code Playgroud)

但是对于中位数我得到:

>>> numpy.median(am)
5.0
Run Code Online (Sandbox Code Playgroud)

但我希望更像这样的结果:

>>> numpy.median([x for x in a if not numpy.isnan(x)])
4.5
Run Code Online (Sandbox Code Playgroud)

而不幸的masked_array是,没有median方法.

Pie*_* GM 11

使用np.ma.medianMaskedArray.

[ 解释:如果我没记错的话,np.median它不支持子类,因此无法正常工作np.ma.MaskedArray.]