10

在屏蔽数组的情况下,我对 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

不幸的是 amasked_array没有median方法。

4

1 回答 1

15

使用np.ma.medianMaskedArray.

[解释:如果我没记错的话,np.median不支持子类,所以它无法在np.ma.MaskedArray. ]

于 2012-09-11T14:57:25.373 回答