<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Oct 19, 2015 at 5:16 AM, Sebastian Berg <span dir="ltr"><<a href="mailto:sebastian@sipsolutions.net" target="_blank">sebastian@sipsolutions.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Mo, 2015-10-19 at 01:34 -0400, <a href="mailto:josef.pktd@gmail.com" target="_blank">josef.pktd@gmail.com</a> wrote:<br>
><br>
<br>
<snip><br>
<span><br>
<br>
><br>
> It looks like in 1.9 it depends on the order of the 2-d arrays, which<br>
> it didn't do in 1.6<br>
><br>
<br>
</span>Yes, it uses concatenate, and concatenate probably changed in 1.7 to use<br>
"K" (since "K" did not really exists before 1.7 IIRC).<br>
Not sure what we can do about it, the order is not something that is<br>
easily fixed unless explicitly given. It might be optimized (as in this<br>
case I would guess).<br>
Whether or not doing the fastest route for these kind of functions is<br>
faster for the user is of course impossible to know, we can only hope<br>
that in most cases it is better.<br>
If someone has an idea how to decide I am all ears, but I think all we<br>
can do is put in asserts/tests in the downstream code if it relies<br>
heavily on the order (or just copy, if the order is wrong) :(, another<br>
example is change of the output order in advanced indexing in some<br>
cases, it makes it faster sometimes, and probably slower in others, what<br>
is right seems very much non-trivial.<br></blockquote><div><br></div><div>To understand the reason:</div><div><br></div><div>Is this to have more efficient memory access during copying?</div><div><br></div><div>AFAIU, column_stack needs to create a new array which has to be either F or C contiguous, so we always have to pick one of the two. With a large number of 1d arrays it seemed more "intuitive" to me to copy them by columns.</div><div><br></div><div>Josef</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span><font color="#888888"><br>
- Sebastian<br>
</font></span><div><div><br>
<br>
><br>
> >>> np.column_stack((np.ones(10), np.ones((10, 2), order='F'))).flags<br>
>   C_CONTIGUOUS : False<br>
>   F_CONTIGUOUS : True<br>
>   OWNDATA : True<br>
>   WRITEABLE : True<br>
>   ALIGNED : True<br>
>   UPDATEIFCOPY : False<br>
><br>
><br>
><br>
><br>
> which means the default order looks more like "K" now, not "C", IIUC<br>
><br>
><br>
> Josef<br>
><br>
><br>
><br>
><br>
><br>
>         Josef<br>
><br>
><br>
><br>
><br>
><br>
>                 Stephan<br>
><br>
>                 _______________________________________________<br>
>                 NumPy-Discussion mailing list<br>
>                 <a href="mailto:NumPy-Discussion@scipy.org" target="_blank">NumPy-Discussion@scipy.org</a><br>
>                 <a href="https://mail.scipy.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
><br>
><br>
><br>
><br>
><br>
> _______________________________________________<br>
> NumPy-Discussion mailing list<br>
> <a href="mailto:NumPy-Discussion@scipy.org" target="_blank">NumPy-Discussion@scipy.org</a><br>
> <a href="https://mail.scipy.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
<br>
</div></div><br>_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org" target="_blank">NumPy-Discussion@scipy.org</a><br>
<a href="https://mail.scipy.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
<br></blockquote></div><br></div></div>