Understanding ndarray.fill() method in NumPy (6 examples)

Updated: February 26, 2024 By: Guest Contributor Post a comment

Introduction

NumPy, a core library for numeric and mathematical computing in Python, offers a wide array of functionalities for handling arrays. One such handy method is ndarray.fill(), which fills an array with a scalar value. This tutorial will guide you through various scenarios demonstrating the power and flexibility of the fill() method.

What does ndarray.fill() Do?

The ndarray.fill() method replaces all elements in an array with a specified scalar value. This functionality is especially useful for initializing or resetting an array. Before diving into examples, ensure NumPy is installed:

pip install numpy

Let’s begin with the basics.

Example 1: Basic Usage

Firstly, create a simple array and fill it with a value:

import numpy as np

arr = np.array([1, 2, 3, 4])
arr.fill(0)
print(arr)

Output:

[0 0 0 0]

This example demonstrates the straightforward use of fill() to replace all elements of an array with zero.

Example 2: Working with Multidimensional Arrays

Now, let’s work with a 2D array:

import numpy as np

arr_2d = np.array([[1, 2], [3, 4]])
arr_2d.fill(9)
print(arr_2d)

Output:

[[9 9]
 [9 9]]

This example illustrates that fill() works seamlessly with multidimensional arrays, replacing every element regardless of its dimension.

Example 3: Filling with a Floating Point Value

It is also possible to fill an array with a floating-point value. Let’s see an example:

import numpy as np

arr = np.array([1, 2, 3])
arr.fill(3.14)
print(arr)

Output:

[3 3 3]

Note that even though we filled the array with a floating-point number, the array’s datatype was integer, leading NumPy to implicitly cast the float to an int. This showcases the importance of being mindful of the array’s dtype.

Example 4: Compatibility with Complex Numbers

NumPy’s fill() method can handle complex numbers as well. Here’s how:

import numpy as np

arr = np.array([1+1j, -1-1j], dtype=complex)
arr.fill(2+3j)
print(arr)

Output:

[2.+3.j 2.+3.j]

This demonstrates the fill() method’s versatility, allowing it to work with complex numbers, provided the array is of an appropriate data type.

Example 5: Reinitializing an Array

Often, you may need to reset an array’s contents. The fill() method can be efficiently used for this purpose:

import numpy as np

arr = np.ones(5)
print('Before fill:', arr)

arr.fill(0)
print('After fill:', arr)

Outputs:

Before fill: [1. 1. 1. 1. 1.]
After fill: [0. 0. 0. 0. 0.]

This usage showcases fill() as an optimal solution for reinitializing arrays to a desired value, making it very handy in loops or iterative algorithms.

Example 6: Performance Considerations

Finally, let’s touch upon the performance aspect. fill() is implemented at the C level within NumPy, making it substantially faster for filling arrays than, say, a Python loop:

import numpy as np
import time

# Large array
arr = np.ones((1000, 1000))

start_time = time.time()
arr.fill(0)
end_time = time.time()

print('Fill method took:', str(end_time - start_time), 'seconds')

Compared to a Python for-loop implementation, fill() is significantly more efficient for large arrays, making it the preferred choice for high-performance computing tasks.

Conclusion

The ndarray.fill() method is a versatile and efficient tool in the NumPy library, useful for a wide range of applications. Through these examples, we’ve seen how it can handle various data types and array configurations, highlighting its utility in both basic and advanced numerical computing tasks.