On Monday, January 9, 2012, questions anon <questions.a...@gmail.com> wrote: > thanks for the responses. > Unfortunately they are not matching shapes >>>> print TSFC.shape, TIME.shape, LAT.shape, LON.shape > (721, 106, 193) (721,) (106,) (193,) > > So I still receive index out of bounds error: >>>>tmax=TSFC.max(axis=0) > numpy array of max values for the month >>>>maxindex=tmax.argmax() > 2928 >>>>maxtemp=tmax.ravel()[maxindex] #or maxtemp=TSFC.max() > 35.5 (degrees celcius) > >>>>latloc=LAT[tmax.argmax()] > IndexError: index out of bounds > > lonloc=LON[tmax.argmax()] > timeloc=TIME[tmax.argmax()] > > > Any other ideas for this type of situation? > thanks
Right, we realize they are not the same shape. When you use argmax on the temperature data, take that index number and use unravel_index(index, TSFC.shape) to get a three-element tuple, each being the index in the TIME, LAT, LON arrays, respectively. Cheers, Ben Root > > On Wed, Jan 4, 2012 at 10:29 PM, Derek Homeier < de...@astro.physik.uni-goettingen.de> wrote: >> >> On 04.01.2012, at 5:10AM, questions anon wrote: >> >> > Thanks for your responses but I am still having difficuties with this problem. Using argmax gives me one very large value and I am not sure what it is. >> > There shouldn't be any issues with the shape. The latitude and longitude are the same shape always (covering a state) and the temperature (TSFC) data are hourly for a whole month. >> >> There will be an issue if not TSFC.shape == TIME.shape == LAT.shape == LON.shape >> >> One needs more information on the structure of these data to say anything definite, >> but if e.g. your TSFC data have a time and a location dimension, argmax will >> per default return the index for the flattened array (see the argmax documentation >> for details, and how to use the axis keyword to get a different output). >> This might be the very large value you mention, and if your location data have fewer >> dimensions, the index will easily be out of range. As Ben wrote, you'd need extra work to >> find the maximum location, depending on what maximum you are actually looking for. >> >> As a speculative example, let's assume you have the temperature data in an >> array(ntime, nloc) and the position data in array(nloc). Then >> >> TSFC.argmax(axis=1) >> >> would give you the index for the hottest place for each hour of the month >> (i.e. actually an array of ntime indices, and pointer to so many different locations). >> >> To locate the maximum temperature for the entire month, your best way would probably >> be to first extract the array of (monthly) maximum temperatures in each location as >> >> tmax = TSFC.max(axis=0) >> >> which would have (in this example) the shape (nloc,), so you could directly use it to index >> >> LAT[tmax.argmax()] etc. >> >> Cheers, >> Derek >> >> _______________________________________________ >> 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