[Numpy-discussion] Subclassing ndarray with concatenate

Todd toddrjen@gmail....
Wed Jan 30 03:24:22 CST 2013


On Tue, Jan 22, 2013 at 1:44 PM, Sebastian Berg
<sebastian@sipsolutions.net>wrote:

> Hey,
>
> On Tue, 2013-01-22 at 10:21 +0100, Todd wrote:
>
> > The main exception I have found is concatenate (and hstack/vstack,
> > which just wrap concatenate).  In this case, __array_finalize__ is
> > passed an array that has already been stripped of the additional
> > attributes, and I don't see a way to recover this information.
> >
> There are quite a few functions that simply do not preserve subclasses
> (though I think more could/should call `__array_wrap__` probably, even
> if the documentation may say that it is about ufuncs, there are some
> example of this already).
> `np.concatenate` is one of these. It always returns a base array. In any
> case it gets a bit difficult if you have multiple input arrays (which
> may not matter for you).
>


I don't think this is right.  I tried it and it doesn't return a base
array, it returns an instance of the original array subclass.


>
> > In my particular case at least, there are clear ways to handle corner
> > cases (like being passed a class that lacks these attributes), so in
> > principle there no problem handling concatenate in a general way,
> > assuming I can get access to the attributes.
> >
> >
> > So is there any way to subclass ndarray in such a way that concatenate
> > can be handled properly?
> >
> Quite simply, no. If you compare masked arrays, they also provide their
> own concatenate for this reason.
>
> I hope that helps a bit...
>
>
Is this something that should be available?  For instance a method that
provides both the new array and the arrays that were used to construct it.
This would seem to be an extremely common use-case for array subclasses, so
letting them gracefully handle this would seem to be very important.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20130130/ba452597/attachment.html 


More information about the NumPy-Discussion mailing list