Search code examples
pythonpython-3.xnumpynumpy-ndarraymin

Find n argmins in 2d array


I need to find n argmins in 2d array in python, how can I do that?

EXAMPLE:

a=np.array([[1, 5, 9], [2, 3, 10], [4, 11, 12]])
argmins = n_argmins(a, 5) # finding 5 argmins
print(argmins)

OUTPUT:

[[0 1]
 [0 2]
 [1 0]
 [1 1]
 [2 0]]

Solution

  • You can try the following:

    import numpy as np
    
    a=np.array([[1, 5, 9], [2, 3, 10], [4, 11, 12]])
    np.c_[np.unravel_index(a.ravel().argsort()[:5], a.shape)]
    

    It gives:

    array([[0, 0],
           [1, 0],
           [1, 1],
           [2, 0],
           [0, 1]])