Beanan O Loughlin wrote: > Hi all, I'm a meteorology postgrad working with python for the first time. > > I have found the location minimum in a large covariance matrix. this > value corresponds to the covariance of two points on a latitude, > longitude grid. > > I need to find a method to locate these two points on the lat,lon grid. Usually multi-dimensional arrays are stored in "row-major" order. So the subscripts of an array of shape 2,3,4 (planes, rows. columns) would look like: 1,1,1 1,1,2 1,1,3 1,1 4 1,2,1 1,2,2 1,2,3 1,2,4 1,3,1 1,3,2 1,3,3 1,3,4 2,1,1 2,1,2 2,1,3 2,1 4 2,2,1 2,2,2 2,2,3 2,2,4 2,3,1 2,3,2 2,3,3 2,3,4
When you reshape it to 2,12 the elements remain "in place", and the subscripts now are: 1,1 1,2 1,3 1,4 1,5 1,6 1,7 1,8 1,9 1,10 1,11 1,12 2,1 2,2 2,3 2,4 2,5 2,6 2,7 2,8 2,9 2,10 2,11 2,12 Is that enough of a hint? > > this is the code i have used, where 'se' is a 3-D array of data > > > >>> nt,nlat,nlon = shape(se) > >>>nt,nlat,nlon # 3-D array of data taken > 1464 times, over 41 latitudes and 58 longitudes > (1464, 41, 58) > >>> > >>> > >>>m=reshape(se,(nt,nlat*nlon)) # reshape to (time,latitude > longitude data point) where 2378 = 41*58 > >>> > >>>shape(m) > (1464,2378) > >>> > >>> > >>>covmat=cov(m) # calculate covariance matrix > >>> > >>>shape(covmat) > (2378,2378) > > >>>def min(R): > U = triu(R) #just use one half of > the diagonal matrix > n = U.shape[0] > U.flat[::n+1] = 1000000000.0 #give the diagonal elements a > large value so they wont be selected > k = argmin(U.flat) #find the min value of > the flattened array > i, j = divmod(k,n) #calculate the index of > the minimum data > return i, j, R[i,j] > > >>> > >>> min(covmat) > (7, 1914, -2.3016361721151051) > > so the minimum is found at (7,1914) in the covariance matrix and has a > value of - 2.3 > > This min point corresponds to the covariance between two 'lat,lon' > data points in my (41,58) sample grid. > > Is there a way i can move back from my (2378,2378) covariance matrix > to see where these two points are located on the (41, 58) grid? > > Thank you very much in advance > > B. > > ------------------------------------------------------------------------ > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > -- Bob Gailer 510-978-4454 Oakland, CA 919-636-4239 Chapel Hill, NC _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor