Minimum Value On A 2d Array Python
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"