On Thu, Mar 5, 2009 at 9:15 PM, Stéfan van der Walt <ste...@sun.ac.za> wrote: > Hi Robin > > 2009/3/5 Robin <robi...@gmail.com>: >> On Thu, Mar 5, 2009 at 10:57 AM, Robin <robi...@gmail.com> wrote: >>> On Thu, Mar 5, 2009 at 10:40 AM, Robin <robi...@gmail.com> wrote: >>>> Hi, >>>> >>>> I have an indexing problem, and I know it's a bit lazy to ask the >>>> list, sometime when people do interesting tricks come up so I hope no >>>> one minds! >>>> >>>> I have a 2D array X.shape = (a,b) >>>> >>>> and I want to change it into new array which is shape (2,(a*b)) which >>>> has the following form: >>>> [ X[0,0], X[0,1] >>>> X[1,0], X[1,1] >>>> X[2,0], X[2,1] >>>> .... >>>> X[a,0], X[a,1] >>>> X[0,1], X[0,2] >>>> X[1,1], X[1,2] >>>> ... >>>> ] >>>> > > >From the array you wrote down above, I assume you meant ((a*b-1), 2): > > In [23]: x = np.arange(16).reshape((4,4)) > > In [24]: x > Out[24]: > array([[ 0, 1, 2, 3], > [ 4, 5, 6, 7], > [ 8, 9, 10, 11], > [12, 13, 14, 15]]) > > In [25]: x.strides > Out[25]: (16, 4) > > In [26]: np.lib.stride_tricks.as_strided(x, shape=(3, 4, 2), strides=(4, 16, > 4)) > Out[26]: > array([[[ 0, 1], > [ 4, 5], > [ 8, 9], > [12, 13]], > > [[ 1, 2], > [ 5, 6], > [ 9, 10], > [13, 14]], > > [[ 2, 3], > [ 6, 7], > [10, 11], > [14, 15]]]) > > In [27]: np.lib.stride_tricks.as_strided(x, shape=(3, 4, 2), > strides=(4, 16, 4)).reshape((12, 2)) > Out[27]: > array([[ 0, 1], > [ 4, 5], > [ 8, 9], > [12, 13], > [ 1, 2], > [ 5, 6], > [ 9, 10], > [13, 14], > [ 2, 3], > [ 6, 7], > [10, 11], > [14, 15]]) > > Does that help?
Ah thats great thanks... I had realised it could be done with as_strided and a reshape from your excellent slides - but I had trouble figure out the new strides so I settled on making a list with _ix and the hstack'ing the list. This is much neater though. Thanks, Robin _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion