python - numpy inserting axis makes data non-contiguous -


why inserting new axis make data non-contiguous?

>>> = np.arange(12).reshape(3,4,order='f') >>> array([[ 0,  3,  6,  9],        [ 1,  4,  7, 10],        [ 2,  5,  8, 11]]) >>> a.reshape((3,1,4)).flags   c_contiguous : false   f_contiguous : false   owndata : false   writeable : true   aligned : true   updateifcopy : false >>> a[np.newaxis,...].flags   c_contiguous : false   f_contiguous : false   owndata : false   writeable : true   aligned : true   updateifcopy : false >>> a.flags   c_contiguous : false   f_contiguous : true   owndata : false   writeable : true   aligned : true   updateifcopy : false 

note if use c ordering, maintain contiguous data when reshape, not when add new axis:

>>> array([[ 0,  1,  2,  3],        [ 4,  5,  6,  7],        [ 8,  9, 10, 11]]) >>> a.flags   c_contiguous : true   f_contiguous : false   owndata : false   writeable : true   aligned : true   updateifcopy : false  >>> a.reshape(3,1,4).flags   c_contiguous : true   f_contiguous : false   owndata : false   writeable : true   aligned : true   updateifcopy : false >>> a[np.newaxis,...].flags   c_contiguous : false   f_contiguous : false   owndata : false   writeable : true   aligned : true   updateifcopy : false 

update might find in search, keep current array order in reshape, a.reshape(3,1,4,order='a') works , keeps contiguous array contiguous.


for asking "why care?", part of script passing arrays in fortran order fortran subroutines compiled via f2py. fortran routines require 3d data i'm padding arrays new dimensions them required number of dimensions. i'd keep contiguous data avoid copy-in/copy-out behavior.

this doesn't answer question may of use: can make use of numpy.require np.require(a[np.newaxis,...], requirements='fa').flags
c_contiguous : false
f_contiguous : true
owndata : true
writeable : true
aligned : true
updateifcopy : false


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -