# NumPy fmin – Element-wise minimum of array elements Hello and welcome to this tutorial on Numpy fmin. In this tutorial, we will be learning about the NumPy fmin() method and also seeing a lot of examples regarding the same. So let us begin!

Also read: NumPy fmax – Element-wise maximum of array elements

## What is NumPy fmin?

`fmin()` is a function in NumPy that compares two arrays and returns an array that contains the element-wise minimum of these two arrays.

## Syntax of NumPy fmin

Let us have a look at the syntax of the `fmin()` function.

```numpy.fmin(x1, x2, out=None)
```

Returns:
A new array containing the element-wise maximum of x1 and x2.

• If x1 and x2 are both scalars, then the output is also a scalar.
• If any of x1 or x2 contains a NaN value, then the output for that element-wise comparison is the non-NaN value.
• If both elements in the comparison are NaNs, then NaN is returned as the minimum element.

## Examples

Let’s now look at a few examples to understand the `fmin()` function better.

### When both inputs are scalars

```import numpy as np

a = 2
b = 6
# using fmin function to calculate the element-wise minimum
ans = np.fmin(a, b)
print("a =", a, "\nb =", b)
print("Result =", ans)
```

Output:

```a = 2
b = 6
Result = 2
```

Since 2<6, 2 is the minimum element here.

### Element-wise minimum of 1-d arrays

```import numpy as np

a = [5, 3, -5, 8, -2]
b = [1, 8, -2, 12, -13]
# using fmin function to calculate the element-wise minimum
ans = np.fmin(a, b)
print("a =", a, "\nb =", b)
print("Result =", ans)
```

Output:

```a = [5, 3, -5, 8, -2]
b = [1, 8, -2, 12, -13]
Result = [  1   3  -5   8 -13]
```

The resulting array is computed as:

```ans  = min(a, b) = min(5, 1) = 1
ans  = min(a, b) = min(3, 8) = 3
ans  = min(a, b) = min(-5, -2) = -5
ans  = min(a, b) = min(8, 12) = 8
ans  = min(a, b) = min(-2, -13) = -13
```

### Element-wise minimum of 2-d arrays

```import numpy as np

a = [[13, 8], [10, 7]]
b = [[5, 15], [30, 4]]
# using fmin function to calculate the element-wise minimum
ans = np.fmin(a, b)
print("a =", a, "\nb =", b)
print("Result =\n", ans)
```

Output:

```a = [[13, 8], [10, 7]]
b = [[5, 15], [30, 4]]
Result =
[[ 5  8]
[10  4]]
```

Here, both the input arrays are 2×2 arrays, hence the resulting array is also a 2×2 computed as:

```ans = min(a, b) = min(13, 5) = 5
ans = min(a, b) = min(8, 15) = 8

ans = min(a, b) = min(10, 30) = 10
ans = min(a, b) = min(7, 4) = 4
```

### Element-wise minimum of arrays containing NaNs

Let us now see how the `numpy.fmin()` method handles NaNs.

```import numpy as np

a = [4, 3, 10, np.nan, np.nan]
b = [2, np.nan, 5, 8, np.nan]
# using fmin function to calculate the element-wise minimum
ans = np.fmin(a, b)
print("a =", a, "\nb =", b)
print("Result =", ans)
```

Output:

```a = [4, 3, 10, nan, nan]
b = [2, nan, 5, 8, nan]
Result = [ 2.  3.  5.  8. nan]
```

Here,

```ans  = min(a, b) = min(4, 2) = 2
ans  = min(a, b) = min(3, nan) = 3
ans  = min(a, b) = min(10, 5) = 5
ans  = min(a, b) = min(nan, 8) = 8
ans  = min(a, b) = min(nan, nan) = nan
```

In the above arrays, one of the elements at indices 1 and 3 is NaN, so the minimum is the non-nan value. Also, the element at index 4 in both the input arrays are NaN, so the resulting minimum value is also NaN as mentioned earlier in this tutorial.

## Summary

That’s all! In this tutorial, we learned about the Numpy fmin method and practiced different types of examples using the same.