Usando numpy.median en una matriz enmascarada

Estoy un poco confundido acerca de la salida de numpy.median en el caso de matrices enmascaradas. Aquí hay un ejemplo simple (suponiendo que se importe numpy – tengo la versión 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]) 

Me gustaría poder usar la matriz enmascarada para ignorar los valores de nan en la matriz al calcular la mediana. Esto funciona para la media utilizando el numpy.mean o mean() de la matriz enmascarada:

 >>> numpy.mean(a) nan >>> numpy.mean(am) 4.5 >>> am.mean() 4.5 

Sin embargo para la mediana me sale:

 >>> numpy.median(am) 5.0 

pero esperaría algo más como este resultado:

 >>> numpy.median([x for x in a if not numpy.isnan(x)]) 4.5 

y desafortunadamente un masked_array no tiene un método de median .

Use np.ma.median en un MaskedArray .

[ Explicación: si recuerdo correctamente, np.median no admite subclases, por lo que no funciona correctamente en np.ma.MaskedArray . ]