[Numpy-discussion] missing function in numpy.ma?

Pierre GM pgmdevlist at gmail.com
Wed Mar 26 17:33:19 EDT 2008


Charles,

numpy.ma is supposed to replace numpy.core.ma only. I don't know what happened 
to numpy.oldnumeric.ma, more exactly when it was dropped. A quick search on 
the trac indicates it happens a while ago (before version 1.0.1)...

In short, the major difference between the old (numpy.core.ma) and new 
(numpy.ma) implementation is that MaskedArray is nowadays a subclass of 
ndarray, when it was a complete different object in the old version. The new 
approach does simplify a lot of aspects (subclassing in particular). It 
introduces a lot of functions that were not available in the previous 
version, and it's supposed to be more transparent. 

> But the whole idea was to keep a backward compatible layer with Numeric
> and MA. It worked great for a while and now things are getting more and
> more broken.

As numpy is moving further and further away from Numeric ?

> It is absolutely necessary to have the oldnumeric.ma working as much as
> possible as MA, what's in now is incompatible with code that have been
> successfully upgraded to numpy using your recommended method (official
> numpy doc)

I must admit I'm partially responsible: there are indeed a couple of 
incompatibilities between numpy.core.ma and numpy.ma, there are listed here:
http://www.scipy.org/scipy/numpy/wiki/MaskedArrayApiChanges
All in all, they look minor to me, but may have some naughty side effects: the 
_data as property is the trickiest as it will make tests on id fail.

> Can you put back ALL the function from numpy.oldnumeric.ma ? It
> shouldn't be too much work.

I'm not sure I can assess properly the time it would need. I could try, but I 
never used numpy.oldnumeric.ma myself, and I have difficulties finding an old 
version.

> Now I'm actually worried about using ma at all? What version is in? Is
> it a completely new package or is it still the old one just a bit
> broken? If it's a new one, we'd have to be sure it is fully tested
> before we can redistribute it to other people via our package, or before
> we use it ourselves

Well, as stated before, numpy.ma is a better numpy.core.ma, and therefore not 
totally compatible with Numeric.MA. Lots of functions are equivalent, but 
some functionalities have been added, some dropped. Once again, my objective 
was to ensure compatibility with numpy.core.ma (with which I started learning 
Python), not with Numeric.MA that I never used. Yes, numpy.ma has been 
regularly tested (I've been using it on a quasi daily basis for at least a 
year now); however, some issues/bugs still pop up from times to times.

In any case,  I'd be happy to help you figuring out how to modify/upgrade your 
code from Numeric.MA to numpy.ma, or to answer any specific questions you 
could have.

Sincerely,
P.



More information about the NumPy-Discussion mailing list