2008/8/26 Anne Archibald <[EMAIL PROTECTED]>:
> 2008/8/22 Catherine Moroney <[EMAIL PROTECTED]>:
>> I'm looking for a way to acccomplish the following task without lots
>> of loops involved, which are really slowing down my code.
>>
>> I have a 128x512 array which I want to break down into 2x2 squares.
>> Then, for each 2x2 square I want to do some simple calculations
>> such as finding the maximum value, which I then store in a 64x256
>> array.
>
> You should be able to do some of this with reshape and transpose:
> In [1]: import numpy as np
>
> In [3]: A = np.zeros((128,512))
>
> In [4]: B = np.reshape(A,(64,2,256,2))
>
> In [5]: C = np.transpose(B,(0,2,1,3))
>
> In [6]: C.shape
> Out[6]: (64, 256, 2, 2)

Or you can obtain a similar effect using my new favorite hammer:

from numpy.lib import stride_tricks

rows, cols = x.shape
el = x.dtype.itemsize
y = stride_tricks.as_strided(x, shape=(rows/2, cols/2, 2, 2),
strides=(el*2*cols, el*2, el*cols, el))

Cheers
Stéfan
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to