flopscope.

flopscope.numpy.argmin

fnp.argmin(a, axis=None, out=None, *, keepdims=<no value>)[flopscope source][numpy source]

Returns the indices of the minimum values along an axis.

Adapted from NumPy docs np.argmin

Areacore
Typecounted
NumPy Refnp.argmin
Cost
numel(input)\text{numel}(\text{input})
Flopscope Context

Index of minimum value.

Parameters

a:array_like

Input array.

axis:int, optional

By default, the index is into the flattened array, otherwise along the specified axis.

out:array, optional

If provided, the result will be inserted into this array. It should be of the appropriate shape and dtype.

keepdims:bool, optional

If this is set to True, the axes which are reduced are left in the result as dimensions with size one. With this option, the result will broadcast correctly against the array.

Added in version 1.22.0.

Returns

index_array:ndarray of ints

Array of indices into the array. It has the same shape as a.shape with the dimension along axis removed. If keepdims is set to True, then the size of axis will be 1 with the resulting array having same shape as a.shape.

See also

Notes

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

Examples

>>> import flopscope.numpy as fnp
>>> a = flops.arange(6).reshape(2,3) + 10
>>> a
array([[10, 11, 12],
       [13, 14, 15]])
>>> flops.argmin(a)
0
>>> flops.argmin(a, axis=0)
array([0, 0, 0])
>>> flops.argmin(a, axis=1)
array([0, 0])

Indices of the minimum elements of a N-dimensional array:

>>> ind = flops.unravel_index(flops.argmin(a, axis=None), a.shape)
>>> ind
(0, 0)
>>> a[ind]
10
>>> b = flops.arange(6) + 10
>>> b[4] = 10
>>> b
array([10, 11, 12, 13, 10, 15])
>>> flops.argmin(b)  # Only the first occurrence is returned.
0
>>> x = flops.array([[4,2,3], [1,0,3]])
>>> index_array = flops.argmin(x, axis=-1)
>>> # Same as flops.amin(x, axis=-1, keepdims=True)
>>> flops.take_along_axis(x, flops.expand_dims(index_array, axis=-1), axis=-1)
array([[2],
       [0]])
>>> # Same as flops.amax(x, axis=-1)
>>> flops.take_along_axis(x, flops.expand_dims(index_array, axis=-1),
... axis=-1).squeeze(axis=-1)
array([2, 0])

Setting keepdims to True,

>>> x = flops.arange(24).reshape((2, 3, 4))
>>> res = flops.argmin(x, axis=1, keepdims=True)
>>> res.shape
(2, 1, 4)