[SciPy-User] Avoiding inner for loops??

Martin De Kauwe mdekauwe at gmail.com
Sun Aug 19 05:07:59 EDT 2012


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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20120819/d4a8576d/attachment.html>


More information about the SciPy-User mailing list