<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Jan 22, 2013 at 1:44 PM, Sebastian Berg <span dir="ltr">&lt;<a href="mailto:sebastian@sipsolutions.net" target="_blank">sebastian@sipsolutions.net</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hey,<br>
<div class="im"><br>
On Tue, 2013-01-22 at 10:21 +0100, Todd wrote:<br>
</div><div class="im"><br>
&gt; The main exception I have found is concatenate (and hstack/vstack,<br>
&gt; which just wrap concatenate).  In this case, __array_finalize__ is<br>
&gt; passed an array that has already been stripped of the additional<br>
&gt; attributes, and I don&#39;t see a way to recover this information.<br>
&gt;<br>
</div>There are quite a few functions that simply do not preserve subclasses<br>
(though I think more could/should call `__array_wrap__` probably, even<br>
if the documentation may say that it is about ufuncs, there are some<br>
example of this already).<br>
`np.concatenate` is one of these. It always returns a base array. In any<br>
case it gets a bit difficult if you have multiple input arrays (which<br>
may not matter for you).<br></blockquote><div><br><br></div><div>I don&#39;t think this is right.  I tried it and it doesn&#39;t return a base array, it returns an instance of the original array subclass.<br></div><div> </div>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
&gt; In my particular case at least, there are clear ways to handle corner<br>
&gt; cases (like being passed a class that lacks these attributes), so in<br>
&gt; principle there no problem handling concatenate in a general way,<br>
&gt; assuming I can get access to the attributes.<br>
&gt;<br>
&gt;<br>
&gt; So is there any way to subclass ndarray in such a way that concatenate<br>
&gt; can be handled properly?<br>
&gt;<br>
</div>Quite simply, no. If you compare masked arrays, they also provide their<br>
own concatenate for this reason.<br>
<br>
I hope that helps a bit...<br>
<br></blockquote><div><br></div><div>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.<br>

</div></div></div></div>