[Numpy-discussion] find location of maximum values
ben.root at ou.edu
Mon Jan 9 18:22:39 EST 2012
On Monday, January 9, 2012, questions anon <questions.anon at 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:
> numpy array of max values for the month
>>>>maxtemp=tmax.ravel()[maxindex] #or maxtemp=TSFC.max()
> 35.5 (degrees celcius)
> IndexError: index out of bounds
> Any other ideas for this type of situation?
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.
> 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
>> > 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
>> 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
>> As a speculative example, let's assume you have the temperature data in
>> array(ntime, nloc) and the position data in array(nloc). Then
>> 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
>> To locate the maximum temperature for the entire month, your best way
>> be to first extract the array of (monthly) maximum temperatures in each
>> 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.
>> NumPy-Discussion mailing list
>> NumPy-Discussion at scipy.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the NumPy-Discussion