2 cents from the author of the first folio:

The intent was to allow creation of masked arrays with copy=no, so that the original data could be retrieved from it if desired. But I was quite, quite rigorous about NEVER assuming the data in a masked slot made any sense whatsoever.

The intention was that there are two ways to get a numeric array out of a masked one:

1. Get the data field
2. m.filled()

(1) is strictly at your own risk.