[Numpy-discussion] find location of maximum values

questions anon questions.anon at gmail.com
Mon Jan 9 17:31:41 EST 2012


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

On Wed, Jan 4, 2012 at 10:29 PM, Derek Homeier <
derek at 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 at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20120110/6ab1563a/attachment.html>


More information about the NumPy-Discussion mailing list