[SciPy-User] [SciPy-user] Avoiding inner for loops

Issa Karambal issa@aims.ac...
Sun Aug 19 14:36:05 CDT 2012


Hi,
This will help. You do not need to have  'fake_model' function

ss = []
params = param1*param2*param3
ans = data1+data2*params[:, None]
for i in range(0,len(ans)):
     ss.append( np.sum( obs-ans[i] )**2 )

On 19 August 2012 08:56, mdekauwe <mdekauwe@gmail.com> wrote:

>
> Hi,
>
> I need to avoid (at least) two inner for loops in what I am trying to do
> otherwise my processing takes forever. What is the best way to transfer
> what
> I am doing into a more "numpy way"? Essentially I am trying to call a model
> again for various different parameter combinations. The example is
> fictional, by the grid_size would ideally grow > 500 and by doing so the
> processing speed becomes very slow the way I have set things up..
>
> thanks.
>
> example.
>
>
> import numpy as np
>
> def fake_model(data1, data2, p1, p2, p3):
>     """ complete nonsense """
>     return data1 + data2 * p1 * p2 * p3
>
> data1 = np.random.rand(10) # the size of this arrays varies might be 10
> might be 15 etc
> data2 = np.random.rand(10) # the size of this arrays varies might be 10
> might be 15 etc
> obs = np.random.rand(10) # the size of this arrays varies might be 10 might
> be 15 etc
>
> grid_size = 10 # Ideally this would be a large number
> param1 = np.linspace(5.0, 350, grid_size)
> param2 = np.linspace(5.0, 550, grid_size)
> param3 = np.linspace(1E-8, 10.5, grid_size)
> ss = np.zeros(0)
>
> for p1 in param1:
>     for p2 in param2:
>         for p3 in param3:
>             ans = fake_model(data1, data2, p1, p2, p3)
>
>             ss = np.append(ss, np.sum(obs - ans)**2)
>             print np.sum(obs - ans)**2
> --
> View this message in context:
> http://old.nabble.com/Avoiding-inner-for-loops-tp34319609p34319609.html
> Sent from the Scipy-User mailing list archive at Nabble.com.
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-user/attachments/20120819/c1fb0a5f/attachment.html 


More information about the SciPy-User mailing list