[Numpy-discussion] Re: ndarray.fill and ma.array.filled
Travis Oliphant
oliphant at ee.byu.edu
Mon Apr 10 15:44:07 EDT 2006
> This may be an oportune time to propose something that's been cooking
> in the back of my head for a week or so now: A stripped down array
> superclass. The details of this are not at all locked down, but here's
> a strawman proposal.
This is in essence what I've been proposing since SciPy 2005. I want
what goes into Python to be essentially just this super-class.
Look at this http://numeric.scipy.org/array_interface.html
and check out this
svn co http://svn.scipy.org/svn/PEP arrayPEP
I've obviously been way over-booked to do this myself. Nick Coughlan
expressed interest in this idea (he called it dimarray, but I like
basearray better).
>
> We add an array superclass. call it basearray, that has the same
> C-structure as the existing ndarray. However, it has *no* methods or
> attributes.
Why not give it the attributes corresponding to it's C-structure. I'm
happy with no methods though.
> 1. If we're careful, this could be the basic array object that
> we propose, at least for the first roun,d for inclusion in the
> Python core. It's not useful for anything but passing data betwen
> various application that understand the data structure, but that in
> itself could be a huge win. And the fact that it's dirt simple would
> probably be an advantage to getting it into the core.
The only extra thing I'm proposing is to add the data-descriptor object
into the Python core as well --- other-wise what do you do with
PyArray_Descr * part of the C-structure?
> 2. It provides a useful marker class. MA could inherit from it
> (and use itself for it's data attribute) and then asanyarray would
> behave properly. MA could also use this, or a subclass, as the mask
> object preventing anyone from accidentally using it as data (they
> could always use it on purpose with asarray).
> 3. It provides a platform for people to build other,
> ndarray-like classes in Pure python. This is my main interest. I've
> put together a thin shell over numpy that strips it down to it's
> abolute essentials including a stripped down version of ndarray that
> removes most of the methods. All of the __array_wrap__[1] stuff
> works quite well most of the time, but there's still some issues
> with being a subclass when this particular class is conceptually a
> superclass. If we had an array superclass of some sort, I believe
> that these would be resolved.
>
> In principle at least, this shouldn't be that hard. I think it should
> mostly be rearanging some code and adding some wrappers to existing
> functions. That's in principle. In practice, I'm not certain yet as I
> haven't investigated the code in question in much depth yet. I've been
> meaning to write this up into a more fleshed out proposal, but I got
> distracted by the whole Protocol discussion on python-dev3000. This
> writeup is pretty weak, but hopefully you get the idea.
This is exactly what needs to be done to improve array-support in
Python. This is the conclusion I came to and I'm glad to see that Tim
is now basically having the same conclusion. There are obviously some
details to work out. But, having a base structure to inherit from
would be perfect.
-Travis
More information about the NumPy-Discussion
mailing list