74

How can I know the (row, column) index of the minimum of a numpy array/matrix?

For example, if A = array([[1, 2], [3, 0]]), I want to get (1, 1)

Thanks!

yassin
  • 6,529
  • 7
  • 34
  • 39

2 Answers2

136

Use unravel_index:

numpy.unravel_index(A.argmin(), A.shape)
Philipp
  • 48,066
  • 12
  • 84
  • 109
  • 26
    Thanks, but to comment this is surely a incredibly complex syntax for doing a simple stuff. – linello Nov 11 '16 at 08:38
  • 2
    it really is quite standard syntax, simple even...its just one function extra function call beyond A.argmin(), which returns an index.... – physincubus Oct 30 '18 at 17:19
3

[Corrected typo]

Another simple solution is

ri, ci = A.argmin()//A.shape[1], A.argmin()%A.shape[1]

As numpy.argmin returns the index reading in row-major order


Yes, you are right, it was a typo, which worked for square matrix