[Numpy-discussion] find location of maximum values
Mon Jan 9 19:59:00 CST 2012
thank you, I seem to have made some progress (with lots of help)!!
I still seem to be having trouble with the time. Because it is hourly data
for a whole month I assume that is where my problem lies.
When I run the following code I alwayes receive the first timestamp of the
file. Not sure how to get around this:
maxtemp=tmax.ravel()[maxindex] #or maxtemp=TSFC.max()
print maxindex, maxtemp
print latlocation, lonlocation
cdftime=utime('seconds since 1970-01-01 00:00:00')
On Tue, Jan 10, 2012 at 10:22 AM, Benjamin Root <firstname.lastname@example.org> wrote:
> On Monday, January 9, 2012, questions anon <email@example.com>
> > 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:
> > numpy array of max values for the month
> > 2928
> >>>>maxtemp=tmax.ravel()[maxindex] #or maxtemp=TSFC.max()
> > 35.5 (degrees celcius)
> > 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.
> Ben Root
> > On Wed, Jan 4, 2012 at 10:29 PM, Derek Homeier <
> firstname.lastname@example.org> 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 ==
> >> 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
> >> per default return the index for the flattened array (see the argmax
> >> 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
> >> 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
> >> (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
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the NumPy-Discussion