## Minimum value on a 2d array python

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

## Finding the minimum value above 0 in a 2D array. Python

Since you have a numpy array, a much simpler way to filter and get the minimum is to do the following.

`np.min(count1[count1>k])`

And the reason you see a filter object is that `filter`

returns a filter object. Also, I am not very sure if `filter`

works with 2D arrays. You might have to first flatten it if you want to use `filter`

## how to find max, min and average by using if technique in a 2d array in python

You can use `numpy`

module to find min and max values easily:

`import numpy as np`

x = np.array([[80, 59, 34, 89], [31, 11, 47, 64], [29, 56, 13, 91], [55, 61, 48, 0], [75, 78, 81, 91]])

minValue = np.min(x)

maxValue = np.max(x)

print(minValue)

print(maxValue)

If you need to find them without build-in methods, you can use an approach as follows:

`x = [[80, 59, 34, 89], [31, 11, 47, 64], [29, 56, 13, 91], [55, 61, 48, 0], [75, 78, 81, 91]]`

minValue = x[0][0]

maxValue = x[0][0]

sumAll = 0

count = 0

for inner in x:

for each in inner:

if each > maxValue: maxValue = each

if each < minValue: minValue = each

sumAll += each

count += 1

average = sumAll / count

In this approach, you compare each value to find min and max. At the same time sum, count each element to calculate average.

## How to find the top n minimum values in a two dimensional numpy matrix

You can flatten that matrix, use `np.ravel`

, and sort it afterwards:

`>>> v`

array([[2, 2, 3, 3, 4],

[4, 5, 5, 5, 6],

[6, 7, 7, 8, 8],

[9, 9, 9, 9, 9]])

>>> v1 = v.ravel() #flattened the array

>>> v1.sort() # sorted that.

>>> n = 10 # value of n

>>> v1[:n]

array([2, 2, 3, 3, 4, 4, 5, 5, 5, 6])

## Get max or min n-elements out of numpy array? (preferably not flattened)

The standard way to get the indices of the largest or smallest values in an array is to use `np.argpartition`

. This function uses an introselect algorithm and runs with linear complexity - this performs better than fully sorting for larger arrays (which is typically O(n log n)).

By default this function works along the last axis of the array. To consider an entire array, you need to use `ravel()`

. For example, here's a random array `a`

:

`>>> a = np.random.randint(0, 100, size=(5, 5))`

>>> a

array([[60, 68, 86, 66, 9],

[66, 26, 83, 87, 50],

[41, 26, 0, 55, 9],

[57, 80, 71, 50, 22],

[94, 30, 95, 99, 76]])

Then to get the indices of the five largest values in the (flattened) 2D array, use:

`>>> i = np.argpartition(a.ravel(), -5)[-5:] # argpartition(a.ravel(), 5)[:5] for smallest`

>>> i

array([ 2, 8, 22, 23, 20])

To get back the corresponding 2D indices of these positions in `a`

, use `unravel_index`

:

`>>> i2d = np.unravel_index(i, a.shape)`

>>> i2d

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

Then indexing `a`

with `i2d`

gives back the five largest values:

`>>> a[i2d]`

array([86, 87, 95, 99, 94])

## How to find index of minimum non zero element with numpy?

`np.nonzero(theta)`

returns the index of the values that are non-zero. In your case, it returns,

`[1,2,3]`

Then, theta[np.nonzero(theta)] returns the values

`[1,2,3]`

When you do `np.argmin(theta[np.nonzero(theta)])`

on the previous output, it returns the index of the value `1`

which is 0.

Hence, the correct approach would be:

`i,j = np.where( theta==np.min(theta[np.nonzero(theta)]))`

where `i,j`

are the indices of the minimum non zero element of the original numpy array

`theta[i,j]`

or `theta[i]`

gives the respective value at that index.

## Filtering a 2D numpy array

With your array being `arr`

and your values being `(_min, _max)`

, use:

`selection = np.logical_and(_min <= arr, arr <= _max)`

selection = np.logical_and(selection[0], selection[1])

filtered_arr = arr[:, selection]

### Related Topics

How to Divide Each Column of Pandas Dataframe by a Series

Pandas: How to Assign Values Based on Multiple Conditions for Existing Columns

Remove Partial String from Dataframe With Pandas

Finding the Index of the First Occurrence of Any Item in a List

Replacing All Negative Values in Certain Columns by Another Value in Pandas

How Does \R (Carriage Return) Work in Python

How to Name Dataframes Dynamically in Python

How to Fill a Column With the Value of Another Column Based on a Condition on Some Other Columns

Deleting Rows from CSV Based on Cell Contents from Another Csv

How to Remove Text Within Parentheses With a Regex

How to Make Python Get the Username in Windows and Then Implement It in a Script

Check If a Specific Class and Value Exist in HTML Using Beautifulsoup Python

How to Detect and Remove Outliers from Each Column of Pandas Dataframe At One Go

Masking User Input in Python With Asterisks

How to Convert Datetime to Integer in Python

Best Way to Get the Max Value in a Spark Dataframe Column

Using Python, How to Access a Shared Folder on Windows Network