On Mon, Feb 25, 2008 at 7:08 PM, Trond Kristiansen <[EMAIL PROTECTED]> wrote:
> > > 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. > Python if statements are certain death. Chuck
_______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion