numpy.argmin () in Python

argmin | NumPy | Python Methods and Functions

numpy.argmin (array, axis = None, out = None): returns the indices of the minimum element in an array on a specific axis. 
Parameters:

  array:  Input array to work on  axis:  [int, optional] Along a specified axis like 0 or 1  out:  [array optional] Provides a feature to insert output to the  out  array and it should be of appropriate shape and dtype 

Return:

 Array of indices into the array with same shape as array.shape with the dimension along axis removed. 

Code 1 :

# Python program illustrating
# argmin () work

 

import numpy as geek 

 
# Working with 1D array

a rray = geek.arange ( 8 )

print ( "INPUT ARRAY:" , array)

 

 
# returns the indexes of the min element
# by indicators

print ( "Indices of min element: " , geek.argmin (array, axis = 0 ))

Output:

 INPUT ARRAY: [0 1 2 3 4 5 6 7] Indices of min element: 0 

Code 2:

# Python program illustrating
# argmin () work

 

import numpy as geek 

 
# Working with 2D array

array =   geek.random.randint ( 16 , size = ( 4 , 4 ))

print ( "INPUT ARRAY:" , array)

 
# returns min element indices
# by metrics

 
"" "

  [[8 13 5 0]

[0 2 5 3]

[10 7 15 15]

[3 11 4 12]]

^ ^ ^ ^

0 2 4 0 - element

1 1 3 0 - indicators

"" "

print ( "Indices of min element: " , geek.argmin (array, axis  = 0 ))

Output:

 INPUT ARRAY: [[8 13 5 0] [0 2 5 3] [10 7 15 15] [3 11 4 12]] Indices of min element: [1 1 3 0] 

Code 3:

Output:

 array: [[0 1 2 3 4] [5 6 7 8 9]] array: [[10 1 2 3 4] [5 1 7 8 9]] array: 1 min ELEMENT INDICES: [1 0 0 0 0] 

Links:
argmin.html # numpy.argmin> https://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.argmin.html#numpy.argmin

Notes:
These codes will not work for online IDs. Please run them on your systems to see how they work

This article is provided by Mohit Gupta_OMG



numpy.argmin () in Python: StackOverflow Questions

Answer #1

import numpy as np
def find_nearest(array, value):
    array = np.asarray(array)
    idx = (np.abs(array - value)).argmin()
    return array[idx]

array = np.random.random(10)
print(array)
# [ 0.21069679  0.61290182  0.63425412  0.84635244  0.91599191  0.00213826
#   0.17104965  0.56874386  0.57319379  0.28719469]

value = 0.5

print(find_nearest(array, value))
# 0.568743859261

Answer #2

Say that you have a list values = [3,6,1,5], and need the index of the smallest element, i.e. index_min = 2 in this case.

Avoid the solution with itemgetter() presented in the other answers, and use instead

index_min = min(range(len(values)), key=values.__getitem__)

because it doesn"t require to import operator nor to use enumerate, and it is always faster(benchmark below) than a solution using itemgetter().

If you are dealing with numpy arrays or can afford numpy as a dependency, consider also using

import numpy as np
index_min = np.argmin(values)

This will be faster than the first solution even if you apply it to a pure Python list if:

  • it is larger than a few elements (about 2**4 elements on my machine)
  • you can afford the memory copy from a pure list to a numpy array

as this benchmark points out: enter image description here

I have run the benchmark on my machine with python 2.7 for the two solutions above (blue: pure python, first solution) (red, numpy solution) and for the standard solution based on itemgetter() (black, reference solution). The same benchmark with python 3.5 showed that the methods compare exactly the same of the python 2.7 case presented above

Get Solution for free from DataCamp guru

# Python program illustrating
# argmin () work

 

import numpy as geek 

 
# Working with 2D array

array =   geek.arange ( 10 ). Reshape ( 2 , 5 )

print ( "array:" , array)

 

array [ 0 ] [ 0 ] = 10

array [ 1 ] [ 1 ] = 1

array [ 0 ] [ 1 ] = 1

print ( "array: " , array)

  
# Returns the min element

print ( "array:" , geek.argmin (array))

 
# First occurrence of min element given

print ( "min ELEMENT INDICES:" , geek.argmin (array, axis = 0 ))