[SciPy-User] re[SciPy-user] moving for loops...

mdekauwe mdekauwe at gmail.com
Fri May 21 10:55:50 EDT 2010


Thanks that works...

So the way to do it is with np.arange(tsteps)[:,None], that was the step I
was struggling with, so this forms a 2D array which replaces the the two for
loops? Do I have that right?

A lot quicker...!

Martin


josef.pktd wrote:
> 
> On Fri, May 21, 2010 at 8:59 AM, mdekauwe <mdekauwe at gmail.com> wrote:
>>
>> Hi,
>>
>> I am trying to extract data from a 4D array and store it in a 2D array,
>> but
>> avoid my current usage of the for loops for speed, as in reality the
>> arrays
>> sizes are quite big. Could someone also try and explain the solution as
>> well
>> if they have a spare moment as I am still finding it quite difficult to
>> get
>> over the habit of using loops (C convert for my sins). I get that one
>> could
>> precompute the indices's i and j i.e.
>>
>> i = np.arange(tsteps)
>> j = np.arange(numpts)
>>
>> but just can't get my head round how i then use them...
>>
>> Thanks,
>> Martin
>>
>> import numpy as np
>>
>> numpts=10
>> tsteps = 12
>> vari = 22
>>
>> data = np.random.random((tsteps, vari, numpts, 1))
>> new_data = np.zeros((tsteps, numpts), dtype=np.float32)
>> index = np.arange(numpts)
>>
>> for i in xrange(tsteps):
>>    for j in xrange(numpts):
>>        new_data[i,j] = data[i,5,index[j],0]
> 
> The index arrays need to be broadcastable against each other.
> 
> I think this should do it
> 
> new_data = data[np.arange(tsteps)[:,None], 5, np.arange(numpts), 0]
> 
> Josef
>>
>>
>> --
>> View this message in context:
>> http://old.nabble.com/removing-for-loops...-tp28633477p28633477.html
>> Sent from the Scipy-User mailing list archive at Nabble.com.
>>
>> _______________________________________________
>> SciPy-User mailing list
>> SciPy-User at scipy.org
>> http://mail.scipy.org/mailman/listinfo/scipy-user
>>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
> 
> 

-- 
View this message in context: http://old.nabble.com/removing-for-loops...-tp28633477p28634924.html
Sent from the Scipy-User mailing list archive at Nabble.com.




More information about the SciPy-User mailing list