Eliminar elementos enmascarados en una matriz numpy

Tengo algunas matrices que contienen elementos enmascarados (de Numpy.MaskedArray ), por ejemplo

 data = [0,1,masked,3,masked,5,...] 

Donde la máscara no sigue un patrón regular.

Quiero recorrer la matriz y simplemente eliminar todos los elementos que están enmascarados para terminar con:

 data = [0,1,3,5,...] 

He intentado un bucle como:

 for i in xrange(len(data)): if np.ma.is_masked(data[i]): data.pop(i) 

Pero me sale el error: local variable 'data' referenced before assignment

¿Tengo que crear una nueva matriz y agregar los elementos desenmascarados? ¿O hay una función MaskedArray que puede hacer esto automáticamente? He echado un vistazo a la documentación pero no es obvio para mí.

¡Gracias!

Con máscara bitwise invertion ~ :

 data = data[~data.mask] 

data.compressed() es la función que está buscando