Hi all. This is my first email to the discussion group. I have spent two days trying to get a particular loop to speed up, and the best result I got was this:
tmp1=zeros((eta,xi),float) tmp2=zeros((eta,xi),float) tmp1=tmp1+10000 tmp2=tmp2+10000 for i in range(xi): for j in range(eta): for k in range(s): if z_r[k,j,i] < depth: if tmp1[j,i]==10000: if (depth - z_r[k,j,i]) <= (depth - z_r[0,j,i]): tmp1[j,i]=k else: if (depth - z_r[k,j,i]) <= (depth - z_r[int(tmp1[j,i]),j,i]): tmp1[j,i]=k elif z_r[k,j,i] >= depth: if tmp2[j,i]==10000: if abs(depth - z_r[k,j,i]) <= abs(depth - z_r[s-1,j,i]) : tmp2[j,i]=k else: if abs(depth - z_r[k,j,i]) <= abs(depth - z_r[int(tmp2[j,i]),j,i]) : tmp2[j,i]=k Not very impressive. My problem is that I can not find any numpy functions that actually can do the tests I do for each k value in the arrays. I need to identify the position (i,j) of k-values that meet the specified requirement. There are way too many if-else tests here as well. The scripts takes about 10 seconds to run (for 238MB input file), but these arrays are read from netCDF files and can be much larger and easily grow to enormous dimensions. It is therefore crucial for me to speed things up. Hope some of you can help. I really appreciate all feedback on this. I am just a rooky to numpy. Cheers and thanks for all help, Trond _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion