On Mon, Oct 19, 2015 at 9:00 AM, <josef.p...@gmail.com> wrote: > > > On Mon, Oct 19, 2015 at 5:16 AM, Sebastian Berg < > sebast...@sipsolutions.net> wrote: > >> On Mo, 2015-10-19 at 01:34 -0400, josef.p...@gmail.com wrote: >> > >> >> <snip> >> >> >> > >> > It looks like in 1.9 it depends on the order of the 2-d arrays, which >> > it didn't do in 1.6 >> > >> >> Yes, it uses concatenate, and concatenate probably changed in 1.7 to use >> "K" (since "K" did not really exists before 1.7 IIRC). >> Not sure what we can do about it, the order is not something that is >> easily fixed unless explicitly given. It might be optimized (as in this >> case I would guess). >> Whether or not doing the fastest route for these kind of functions is >> faster for the user is of course impossible to know, we can only hope >> that in most cases it is better. >> If someone has an idea how to decide I am all ears, but I think all we >> can do is put in asserts/tests in the downstream code if it relies >> heavily on the order (or just copy, if the order is wrong) :(, another >> example is change of the output order in advanced indexing in some >> cases, it makes it faster sometimes, and probably slower in others, what >> is right seems very much non-trivial. >> > > To understand the reason: > > Is this to have more efficient memory access during copying? > > 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. >
just as background I was mainly surprised last night about having my long held beliefs shattered. I skipped numpy 1.7 and 1.8 in my development environment and still need to catch up now that I use 1.9 as my main numpy version. I might have to update a bit my "folk wisdom", which is not codified anywhere and doesn't have unit tests. For example, the improvement iteration for Fortran contiguous or not C or F contiguous arrays sounded very useful, but I never checked if it would affect us. Josef > > Josef > > > >> >> - Sebastian >> >> >> > >> > >>> np.column_stack((np.ones(10), np.ones((10, 2), order='F'))).flags >> > C_CONTIGUOUS : False >> > F_CONTIGUOUS : True >> > OWNDATA : True >> > WRITEABLE : True >> > ALIGNED : True >> > UPDATEIFCOPY : False >> > >> > >> > >> > >> > which means the default order looks more like "K" now, not "C", IIUC >> > >> > >> > Josef >> > >> > >> > >> > >> > >> > Josef >> > >> > >> > >> > >> > >> > Stephan >> > >> > _______________________________________________ >> > NumPy-Discussion mailing list >> > NumPy-Discussion@scipy.org >> > >> https://mail.scipy.org/mailman/listinfo/numpy-discussion >> > >> > >> > >> > >> > >> > _______________________________________________ >> > NumPy-Discussion mailing list >> > NumPy-Discussion@scipy.org >> > https://mail.scipy.org/mailman/listinfo/numpy-discussion >> >> >> _______________________________________________ >> NumPy-Discussion mailing list >> NumPy-Discussion@scipy.org >> https://mail.scipy.org/mailman/listinfo/numpy-discussion >> >> >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion