# Numpy floor: A step-by-step Guide with Examples

In this blog post, we will delve into the intricacies of the NumPy floor() function, exploring its usage through step-by-step examples and addressing common pitfalls with robust error handling.

## What does floor() do?

The floor() function in NumPy rounds down each element in an array to the nearest integer, returning a new array with the same shape.

``````
import numpy as np

# Example
original_array = np.array([2.34, 5.67, 8.91])
floored_array = np.floor(original_array)

print("Original Array:", original_array)
print("Floored Array:", floored_array)
``````

#### Output:

``````
Original Array: [2.34 5.67 8.91]
Floored Array: [2. 5. 8.]
``````

## Step-by-Step Examples:

### Example 1: Basic Usage

``````
import numpy as np

# Create an array
numbers = np.array([5.75, 2.34, 7.89, 1.23])

# Apply floor() to round down each element
floored_numbers = np.floor(numbers)

print("Original Numbers:", numbers)
print("Floored Numbers:", floored_numbers)
``````

#### Output:

``````
Original Numbers: [5.75 2.34 7.89 1.23]
Floored Numbers: [5. 2. 7. 1.]
``````

The floor() function seamlessly extends to multidimensional arrays:

``````
import numpy as np

# Create a 2D array
matrix = np.array([[1.56, 2.78, 3.99],
[4.12, 5.64, 6.78]])

# Apply floor() to round down each element
floored_matrix = np.floor(matrix)

print("Original Matrix:\n", matrix)
print("Floored Matrix:\n", floored_matrix)
``````

#### Output:

``````
Original Matrix:
[[1.56 2.78 3.99]
[4.12 5.64 6.78]]
Floored Matrix:
[[1. 2. 3.]
[4. 5. 6.]]
``````

## Error Handling with Examples:

NumPy's floor() function is robust, but understanding potential errors can help you write more reliable code.

### Example 3: Handling Non-Numeric Input

``````
import numpy as np

# Handling non-numeric input
try:
non_numeric_array = np.array(["apple", "orange", "banana"])
floored_non_numeric = np.floor(non_numeric_array)
except TypeError as e:
print(f"Error: {e}")
``````

#### Output:

``````
Error: ufunc 'floor' not supported for the input types, and the inputs
could not be safely coerced to any supported types according
to the casting rule ''safe''
``````

### Example 4: Handling NaN (Not a Number) Values

``````
import numpy as np

# Handling NaN values
try:
array_with_nan = np.array([2.45, np.nan, 7.89])
floored_array_with_nan = np.floor(array_with_nan)
except ValueError as e:
print(f"Error: {e}")
``````

#### Output:

``````
Error: cannot convert float NaN to integer
``````

## Conclusion:

Mastering the NumPy floor() function opens up new possibilities for precision in your numerical operations. By understanding its usage through step-by-step examples and addressing potential errors, you'll be better equipped to leverage this powerful function in your Python projects.