Skip to content Skip to sidebar Skip to footer

Minimum Value On A 2d Array Python

I have an array of the following structure which is simplified for this question: 8 2 3 4 5 6 3 6 6 7 2 6 3 8 5 1 2 9 6 4 2 7 8 3 I wish to find the minimum value in this 2D array

Solution 1:

However it only evaluates along a single axis and returns the index of the minimum value along a single row/column whereas I wish to evaluate the whole array and return the lowest value not the indices.

numpy.argmin does not by default evaluate along a single axis, the default is to evaluate along the flattened matrix and it returns the linear index in the flattened array; from the numpy docs that you linked:

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

Either way, use numpy.amin or numpy.min to return the minimum value, or equivalently for an array arrname use arrname.min(). As you mentioned, numpy.argmin returns the index of the minimum value (of course, you can then use this index to return the minimum value by indexing your array with it). You could also flatten into a single dimension array with arrname.flatten() and pass that into the built-in min function.

The four following methods produce what you want.

import numpy as np

values = np.array([
    [8,2,3,4,5,6],
    [3,6,6,7,2,6],
    [3,8,5,1,2,9],
    [6,4,2,7,8,3]])

values.min()          # = 1
np.min(values)        # = 1
np.amin(values)       # = 1
min(values.flatten()) # = 1

Solution 2:

Alternatively for a non-numpy solution:

>>> a = [[8,2,3,4,5,6],
... [3,6,6,7,2,6],
... [3,8,5,1,2,9],
... [6,4,2,7,8,3]]
>>> mymin = min([min(r) for r in a])
>>> mymin
1

Solution 3:

You can use np.min()

>>> arr = np.array([[8,2,3,4,5,6],
                    [3,6,6,7,2,6],
                    [3,8,5,1,2,9],
                    [6,4,2,7,8,3]])

>>> arr.min()
1

Post a Comment for "Minimum Value On A 2d Array Python"