cf.Field.argmax

Field.argmax(axis=None, unravel=False)[source]

Return the indices of the maximum values along an axis.

If no axis is specified then the returned index locates the maximum of the whole data.

In case of multiple occurrences of the maximum values, the indices corresponding to the first occurrence are returned.

Performance

If the data index is returned as a tuple (see the unravel parameter) then all delayed operations are computed.

New in version 3.0.0.

Parameters
axis: optional

Select the domain axis over which to locate the maximum values, defined by the domain axis that would be selected by passing the given axis to a call of the field construct’s domain_axis method. For example, for a value of 'X', the domain axis construct returned by f.domain_axis('X') is selected.

By default the maximum over the flattened data is located.

unravel: bool, optional

If True then when locating the maximum over the whole data, return the location as an integer index for each axis as a tuple. By default an index to the flattened array is returned in this case. Ignored if locating the maxima over a subset of the axes.

Returns
Data or tuple of int

The location of the maximum, or maxima.

Examples

>>> f = cf.example_field(2)
>>> print(f)
Field: air_potential_temperature (ncvar%air_potential_temperature)
------------------------------------------------------------------
Data            : air_potential_temperature(time(36), latitude(5), longitude(8)) K
Cell methods    : area: mean
Dimension coords: time(36) = [1959-12-16 12:00:00, ..., 1962-11-16 00:00:00]
                : latitude(5) = [-75.0, ..., 75.0] degrees_north
                : longitude(8) = [22.5, ..., 337.5] degrees_east
                : air_pressure(1) = [850.0] hPa

Find the T axis indices of the maximum at each X-Y location:

>>> i = f.argmax('T')
>>> print(i.array)
[[31 10  2 27 16  7 21 17]
 [24 34  1 22 28 17 19 13]
 [20  7 15 21  6 20  8 18]
 [24  1  7 18 19  6 11 18]
 [16  8 12  9 12  2  6 17]]

Find the coordinates of the global maximum value, showing that it occurs on 1960-11-16 at location 292.5 degrees east, 45.0 degrees north:

>>> g = f[f.argmax(unravel=True)]
>>> print(g)
Field: air_potential_temperature (ncvar%air_potential_temperature)
------------------------------------------------------------------
Data            : air_potential_temperature(time(1), latitude(1), longitude(1)) K
Cell methods    : area: mean
Dimension coords: time(1) = [1960-11-16 00:00:00]
                : latitude(1) = [45.0] degrees_north
                : longitude(1) = [292.5] degrees_east
                : air_pressure(1) = [850.0] hPa

See cf.Data.argmax for further examples.