5 Best Ways to Round Python NumPy Arrays to 2 Decimal Places

πŸ’‘ Problem Formulation:

Python’s NumPy library is frequently used for numerical calculations involving arrays. In certain scenarios, precisely rounding elements of a NumPy array to two decimal places is required for better readability, storage, or further computation. For example, an input array might be [3.14159265, 2.71828182, 1.61803399], and the desired output would be a similar array but with values rounded to [3.14, 2.72, 1.62].

Method 1: Using the NumPy round() Function

The numpy.round_() function is the standard approach for rounding elements of an array. It provides a parameter to specify the number of decimals. The function is well-suited for operations with multi-dimensional arrays and works element-wise.

Here’s an example:

import numpy as np

array_to_round = np.array([3.14159265, 2.71828182, 1.61803399])
rounded_array = np.round_(array_to_round, 2)

print(rounded_array)

Output:

[3.14 2.72 1.62]

This example demonstrates the use of np.round_() to round each number in a NumPy array to two decimal places. Simply pass the array and the number ‘2’ as the decimals parameter.

Method 2: The NumPy around() Alias Function

The numpy.around() function is an alias to numpy.round_(), and it behaves exactly the same way. It is provided for users familiar with Python’s built-in round() function.

Here’s an example:

import numpy as np

array_to_round = np.array([0.12345678, 9.87654321, 4.56781234])
rounded_array = np.around(array_to_round, 2)

print(rounded_array)

Output:

[0.12 9.88 4.57]

Using np.around(), it is easy to round a NumPy array to two decimal places by specifying ‘2’ as the decimals parameter. The resulting array is rounded as specified.

Method 3: The NumPy set_printoptions() Function

While not directly modifying the array, numpy.set_printoptions() allows for the control of the printed representation of NumPy arrays. It’s useful for uniformly formatting the output throughout the session.

Here’s an example:

import numpy as np

np.set_printoptions(precision=2)

array_to_round = np.array([1.2345, 6.7890, 0.1234])
print(array_to_round)

Output:

[1.23 6.79 0.12]

This snippet sets the precision of the printed output for all NumPy arrays to two decimal places. It does not change the actual data in the array; it only affects how the data is displayed.

Method 4: Using NumPy astype() for Type Casting

Another approach to round the array elements is to use the numpy.ndarray.astype() function. This function casts a NumPy array to a different type, and during this process, the values can be truncated.

Here’s an example:

import numpy as np

array_to_round = np.array([5.555555, 2.222222, 9.999999])
rounded_array = array_to_round.astype('float32').round(2)

print(rounded_array)

Output:

[5.56 2.22 10.  ]

This code demonstrates how to cast an array to a float type with 32-bit precision and then round it to 2 decimal places. Beware that casting can affect the precision and lead to slightly different rounding behavior.

Bonus One-Liner Method 5: Rounding with In-Place Modification

If you wish to modify the original array in-place without creating a copy, you can use the round() method of NumPy arrays.

Here’s an example:

import numpy as np

array_to_round = np.array([12.3456, 78.9012, 34.5678])
array_to_round.round(2, out=array_to_round)

print(array_to_round)

Output:

[12.35 78.9  34.57]

This example shows how to use the round() method of a NumPy array to round to two decimal places in-place, meaning the original array is directly modified with rounded values.

Summary/Discussion

  • Method 1: NumPy round_(). Most standard and straightforward way. Works well with multi-dimensional arrays. No actual disadvantages.
  • Method 2: NumPy around(). Functionally similar to round_(). Suited for those familiar with Python’s built-in round(). Identical to Method 1 otherwise.
  • Method 3: NumPy set_printoptions(). Affects only printed representation, not the actual array data. Good for consistent formatting, but be aware it’s not actual rounding.
  • Method 4: NumPy astype(). Useful for casting and then rounding. Can lead to precision changes due to casting, which might not be desirable for all applications.
  • Bonus Method 5: In-place round(). Efficient since it modifies the array in-place. Care must be taken since the original data is altered.