Numpy - Calculate outer product of two large arrays using For loops and Optimization
NumPy: Performance Optimization Exercise-16 with Solution
Write a function to calculate the outer product of two large 1D NumPy arrays using nested for loops. Optimize it using NumPy's outer() function.
Sample Solution:
Python Code:
import numpy as np
# Generate two large 1D NumPy arrays with random integers
array1 = np.random.randint(1, 1000, size=1000)
array2 = np.random.randint(1, 1000, size=1000)
# Function to calculate the outer product using nested for loops
def outer_product_with_loops(arr1, arr2):
result = np.empty((len(arr1), len(arr2)), dtype=int)
for i in range(len(arr1)):
for j in range(len(arr2)):
result[i, j] = arr1[i] * arr2[j]
return result
# Calculate the outer product using the nested for loops method
outer_with_loops = outer_product_with_loops(array1, array2)
# Calculate the outer product using NumPy's outer() function
outer_with_numpy = np.outer(array1, array2)
# Display the first 10x10 section of the result to verify
print("Outer product using for loops (first 10x10 elements):")
print(outer_with_loops[:10, :10])
print("Outer product using NumPy (first 10x10 elements):")
print(outer_with_numpy[:10, :10])
Output:
Outer product using for loops (first 10x10 elements): [[486878 486878 401402 43576 415648 473470 128214 455034 71230 451682] [339885 339885 280215 30420 290160 330525 89505 317655 49725 315315] [449113 449113 370267 40196 383408 436745 118269 419739 65705 416647] [245182 245182 202138 21944 209312 238430 64566 229146 35870 227458] [513023 513023 422957 45916 437968 498895 135099 479469 75055 475937] [230076 230076 189684 20592 196416 223740 60588 215028 33660 213444] [296310 296310 244290 26520 252960 288150 78030 276930 43350 274890] [392756 392756 323804 35152 335296 381940 103428 367068 57460 364364] [128982 128982 106338 11544 110112 125430 33966 120546 18870 119658] [540911 540911 445949 48412 461776 526015 142443 505533 79135 501809]] Outer product using NumPy (first 10x10 elements): [[486878 486878 401402 43576 415648 473470 128214 455034 71230 451682] [339885 339885 280215 30420 290160 330525 89505 317655 49725 315315] [449113 449113 370267 40196 383408 436745 118269 419739 65705 416647] [245182 245182 202138 21944 209312 238430 64566 229146 35870 227458] [513023 513023 422957 45916 437968 498895 135099 479469 75055 475937] [230076 230076 189684 20592 196416 223740 60588 215028 33660 213444] [296310 296310 244290 26520 252960 288150 78030 276930 43350 274890] [392756 392756 323804 35152 335296 381940 103428 367068 57460 364364] [128982 128982 106338 11544 110112 125430 33966 120546 18870 119658] [540911 540911 445949 48412 461776 526015 142443 505533 79135 501809]]
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 outer_product_with_loops is defined to calculate the outer product using nested for loops.
- Calculating with loops: The outer product is calculated using the nested for loops method.
- Calculating with numpy: The outer product is calculated using NumPy's built-in outer() function.
- Displaying results: The first 10x10 section of the outer product from both methods is printed out to verify correctness.
Python-Numpy Code Editor:
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
Previous: Numpy - Sort elements of a large array using For loop and Optimization.
Next: Numpy program to count Non-Zero elements in large 2D srray using For loop and Optimization.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/python-exercises/numpy/numpy-calculate-outer-product-of-two-large-arrays-using-for-loops-and-optimization.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics