Skip to content

Effortlessly Learn How to Use np.max in Python

[

NumPy’s max() and maximum(): Find Extreme Values in Arrays

by Charles de Villiers

The NumPy library supports expressive, efficient numerical programming in Python. Finding extreme values is a very common requirement in data analysis. The NumPy max() and maximum() functions are two examples of how NumPy lets you combine the coding comfort offered by Python with the runtime efficiency you’d expect from C.

In this tutorial, you’ll learn how to:

  • Use the NumPy max() function
  • Use the NumPy maximum() function and understand why it’s different from max()
  • Solve practical problems with these functions
  • Handle missing values in your data
  • Apply the same concepts to finding minimum values

This tutorial includes a very short introduction to NumPy, so even if you’ve never used NumPy before, you should be able to jump right in. With the background provided here, you’ll be ready to continue exploring the wealth of functionality to be found in the NumPy library.

NumPy: Numerical Python

NumPy is short for Numerical Python. It’s an open-source Python library that enables a wide range of applications in the fields of science, statistics, and data analytics through its support of fast, parallelized computations on multidimensional arrays of numbers. Many of the most popular numerical packages use NumPy as their base library.

Introducing NumPy

The NumPy library is built around a class named np.ndarray and a set of methods and functions that leverage Python syntax for defining and manipulating arrays of any shape or size.

Today, NumPy is in widespread use in fields as diverse as astronomy, quantum computing, bioinformatics, and all kinds of engineering.

NumPy’s max(): The Maximum Element in an Array

The max() function in NumPy returns the maximum value in an array along a specified axis or the maximum value of an entire array. Here’s an example:

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
max_value = np.max(arr)
print(max_value)
# Output: 5

In this example, we create a NumPy array arr containing the numbers 1 to 5. We then use the np.max() function to find the maximum value in the array. The resulting maximum value, 5, is printed to the console.

Handling Missing Values in np.max()

The np.max() function has a parameter called axis, which allows you to find the maximum value along a specified axis of a multidimensional array. This can be useful when working with data that has multiple dimensions. Additionally, the np.nanmax() function can be used to handle missing values (NaN) in your data. Here’s an example:

import numpy as np
arr = np.array([1, 2, np.nan, 4, 5])
max_value = np.nanmax(arr)
print(max_value)
# Output: 5.0

In this example, we have an array arr that contains a missing value represented by NaN. We use the np.nanmax() function to find the maximum value in the array, ignoring the missing value. The resulting maximum value, 5.0, is printed to the console.

NumPy provides several other functions for finding maximum values in arrays. These include np.amax(), which behaves similar to np.max() but has additional options for handling missing values, and np.argmax(), which returns the indices of the maximum values instead of the values themselves.

NumPy’s maximum(): Maximum Elements Across Arrays

The maximum() function in NumPy allows you to find the maximum elements across multiple arrays. Here’s an example:

import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
max_array = np.maximum(arr1, arr2)
print(max_array)
# Output: [4 5 6]

In this example, we have two arrays arr1 and arr2 containing numbers. We use the np.maximum() function to find the element-wise maximum between the two arrays. The resulting array [4, 5, 6] contains the maximum element from each corresponding position in the input arrays.

Handling Missing Values in np.maximum()

Similar to np.max(), the np.maximum() function can handle missing values in your data using the np.nan_to_num() function. Here’s an example:

import numpy as np
arr1 = np.array([1, 2, np.nan])
arr2 = np.array([4, 5, 6])
max_array = np.nan_to_num(np.maximum(arr1, arr2))
print(max_array)
# Output: [4. 5. 6.]

In this example, we have two arrays arr1 and arr2, with arr1 containing a missing value represented by NaN. We use the np.nan_to_num() function to replace the missing value with 0 before finding the maximum element using np.maximum(). The resulting array [4., 5., 6.] contains the maximum element from each corresponding position, with the missing value replaced by 0.

Advanced Usage

In addition to the basic usage of the max() and maximum() functions, NumPy offers several advanced features that can enhance your array manipulation capabilities.

Reusing Memory

When performing operations on large arrays, NumPy provides methods to reuse memory instead of creating new arrays. This can significantly improve efficiency and reduce memory usage. Here’s an example:

import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
result = np.empty_like(arr1)
np.maximum(arr1, arr2, out=result)
print(result)
# Output: [4 5 6]

In this example, we create an empty array result with the same shape and data type as arr1. We then use the out parameter of the np.maximum() function to specify that the result should be stored in the result array instead of creating a new array. This can be useful when dealing with large arrays to save memory and improve performance.

Filtering Arrays

NumPy provides powerful filtering capabilities to extract elements from arrays based on specified conditions. Here’s an example:

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
condition = arr > 3
filtered_array = arr[condition]
print(filtered_array)
# Output: [4 5]

In this example, we create a boolean array condition where each element indicates whether the corresponding element in arr is greater than 3. We then use this boolean array to filter out the elements in arr that satisfy the condition, resulting in the filtered array [4, 5].

Comparing Differently Shaped Arrays With Broadcasting

NumPy’s broadcasting rules allow for element-wise operations between arrays of different shapes. This can be particularly useful when performing calculations involving multiple arrays with different dimensions. Here’s an example:

import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([[4], [5], [6]])
result = np.maximum(arr1, arr2)
print(result)
# Output:
# [[4 4 4]
# [5 5 5]
# [6 6 6]]

In this example, we have an array arr1 with shape (3,) and an array arr2 with shape (3, 1). Despite having different shapes, we can still perform element-wise operations between them using broadcasting. The np.maximum() function compares each element in arr1 with the corresponding elements in arr2 and returns an array with the maximum element at each position. The resulting array has shape (3, 3).

Following Broadcasting Rules

It’s important to understand how broadcasting works in NumPy. Broadcasting allows for operations between arrays with different shapes by automatically aligning dimensions. The official NumPy documentation provides detailed explanations and examples of broadcasting rules.

Conclusion

In this tutorial, we explored the NumPy library and its max() and maximum() functions for finding extreme values in arrays. We covered the basic usage of these functions, handling missing values, and advanced techniques such as reusing memory, filtering arrays, and performing element-wise operations between differently shaped arrays using broadcasting.

NumPy provides powerful capabilities for numerical programming in Python, allowing you to efficiently analyze and manipulate arrays of data. Understanding and utilizing these functions will enable you to efficiently find extreme values and perform various operations on multidimensional arrays.

To further enhance your NumPy skills, make sure to check out the free NumPy Resources Guide that accompanies this tutorial. It provides recommendations for additional tutorials, videos, and books to help you level up your NumPy knowledge.

Now that you have a solid understanding of NumPy’s max() and maximum() functions, you can confidently incorporate them into your data analysis workflows and leverage the full power of numerical programming in Python.