Masked array could probably use a rewrite using `__numpy_ufunc__` anyway when it is time...

Isn't `data` a property and `_data` the real array? Though I think you are probably right and it is identical. If it doesn't, it would be better if `.data` would return a view on `_data` and not the object itself.

About the matrix stuff/subclasses that change the shape... This makes enough trouble in numpy, getting it to work right in ma is probably hell and buggy at best at this time (just my guess on things, I never even used masked arrays ^^). For what I care, I would be fine with deprecating all that `.flat` usage. Do we really need to support subclasses that mess with the shape inside masked arrays?