I know we're not supposed to 'broadcast' thanks, but Thanks! This works much more efficiently!
On Mon, Jan 24, 2011 at 3:50 PM, David Huard <david.hu...@gmail.com> wrote: > Hi John, > > Since you have a regular grid, you should be able to find the x and y > indices without np.where, ie something like > > I = (lon-grid.outlon0 / grid.dx).astype(int) > J = (lat-grid.outlat0 / grid.dy).astype(int) > > for i, j, e in zip(I, J, emissions): > Z[i,j] += e > > > David > > On Mon, Jan 24, 2011 at 8:53 AM, John <washa...@gmail.com> wrote: >> Hello, >> >> I'm trying to cycle over some vectors (lat,lon,emissions) of >> irregularly spaced lat/lon spots, and values. I need to sum the values >> each contributing to grid on a regular lat lon grid. >> >> This is what I have presently, but it is too slow. Is there a more >> efficient way to do this? I would prefer not to create an external >> module (f2py, cython) unless there is really no way to make this more >> efficient... it's the looping through the grid I guess that takes so >> long. >> >> Thanks, >> john >> >> >> >> def grid_emissions(lon,lat,emissions,grid.dx, grid.dy, >> grid.outlat0, grid.outlon0, grid.nxmax, grid.nymax): >> """ sample the emissions into a grid to fold into model output >> """ >> >> dx = grid.dxout >> dy = grid.dyout >> >> # Generate a regular grid to fill with the sum of emissions >> xi = np.linspace(grid.outlon0, >> grid.outlon0+(grid.nxmax*grid.d), grid.nxmax) >> yi = np.linspace(grid.outlat0, >> grid.outlat0+(grid.nymax*grid.dy), grid.nymax) >> >> X, Y = np.meshgrid(yi, xi) >> Z = np.zeros(X.shape) >> >> for i,x in enumerate(xi): >> for j,y in enumerate(yi): >> Z[i,j] = np.sum( emissions[\ >> np.where(((lat>y-dy) & (lat<y+dy)) & >> ((lon>x-dx) & (lon<x+dx)))[0]]) >> >> return Z >> _______________________________________________ >> NumPy-Discussion mailing list >> NumPy-Discussion@scipy.org >> http://mail.scipy.org/mailman/listinfo/numpy-discussion >> > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > -- Configuration `````````````````````````` Plone 2.5.3-final, CMF-1.6.4, Zope (Zope 2.9.7-final, python 2.4.4, linux2), Python 2.6 PIL 1.1.6 Mailman 2.1.9 Postfix 2.4.5 Procmail v3.22 2001/09/10 Basemap: 1.0 Matplotlib: 1.0.0 _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion