w3resource

NumPy - Element-wise division of large arrays using For loop and optimization


NumPy: Performance Optimization Exercise-10 with Solution


Write a NumPy program that creates two large 1D NumPy arrays and write a function to compute their element-wise division using a for loop. Optimize it with vectorized operations.

Sample Solution:

Python Code:

import numpy as np

# Generate two large 1D NumPy arrays with random integers
array1 = np.random.randint(1, 1000, size=1000000)
array2 = np.random.randint(1, 1000, size=1000000)

# Function to compute element-wise division using a for loop
def element_wise_division_with_loop(arr1, arr2):
    result = np.empty_like(arr1, dtype=float)
    for i in range(len(arr1)):
        result[i] = arr1[i] / arr2[i]
    return result

# Compute element-wise division using the for loop method
result_with_loop = element_wise_division_with_loop(array1, array2)

# Compute element-wise division using NumPy's vectorized operations
result_with_numpy = array1 / array2

# Display first 10 results to verify
print("First 10 results using for loop:")
print(result_with_loop[:10])

print("First 10 results using NumPy:")
print(result_with_numpy[:10])

Output:

First 10 results using for loop:
[ 0.59012346  0.74968072  0.99297753  4.62721893 11.5         0.60264901
  1.35180723  0.93093093  5.84732824  2.8951049 ]
First 10 results using NumPy:
[ 0.59012346  0.74968072  0.99297753  4.62721893 11.5         0.60264901
  1.35180723  0.93093093  5.84732824  2.8951049 ]

Explanation:

  • Importing numpy: We first import the numpy library for array manipulations.
  • Generating large arrays: Two large 1D NumPy arrays with random integers are generated.
  • Defining the function: A function element_wise_division_with_loop is defined to compute the element-wise division using a for loop.
  • Computing with loop: Element-wise division is computed using the for loop method.
  • Computing with numpy: Element-wise division is computed using NumPy's vectorized operations.
  • Displaying results: The first 10 results from both methods are printed out to verify correctness.

Python-Numpy Code Editor: