w3resource

Optimizing Transposition of large NumPy arrays

NumPy: Performance Optimization Exercise-6 with Solution

Write a NumPy program that creates a function to transpose a large 2D NumPy array using nested for loops. Optimize it using NumPy's transpose() function.

Sample Solution:

Python Code:

import numpy as np

# Create a large 2D NumPy array with shape (1000, 1000)
large_array = np.random.rand(1000, 1000)

# Function to transpose a 2D array using nested for loops
def transpose_using_loops(array):
    rows, cols = array.shape
    transposed_array = np.zeros((cols, rows))
    for i in range(rows):
        for j in range(cols):
            transposed_array[j, i] = array[i, j]
    return transposed_array

# Transpose the array using the nested for loops
transposed_loop = transpose_using_loops(large_array)
print("Transposed array using for loop (first 5x5 block):\n", transposed_loop[:5, :5])

# Optimize the transposition using NumPy's transpose() function
transposed_numpy = np.transpose(large_array)
print("Transposed array using NumPy's transpose() function (first 5x5 block):\n", transposed_numpy[:5, :5])

Output:

Transposed array using for loop (first 5x5 block):
 [[0.40551353 0.40558167 0.86467457 0.58567322 0.8239284 ]
 [0.3031671  0.45184241 0.5199638  0.52295596 0.52545074]
 [0.40211577 0.25829343 0.6505094  0.60260168 0.49010591]
 [0.42364773 0.85953907 0.24050983 0.50997478 0.54401922]
 [0.94613512 0.94341257 0.30700166 0.25956794 0.17429532]]
Transposed array using NumPy's transpose() function (first 5x5 block):
 [[0.40551353 0.40558167 0.86467457 0.58567322 0.8239284 ]
 [0.3031671  0.45184241 0.5199638  0.52295596 0.52545074]
 [0.40211577 0.25829343 0.6505094  0.60260168 0.49010591]
 [0.42364773 0.85953907 0.24050983 0.50997478 0.54401922]
 [0.94613512 0.94341257 0.30700166 0.25956794 0.17429532]]

Explanation:

  • Create a large array: A 2D NumPy array with shape (1000, 1000) is created using np.random.rand().
  • Function with nested for loops: A function transpose_using_loops transposes the array using nested for loops.
  • Transpose with loops: The array is transposed using the nested for loops, and the first 5x5 block of the result is printed.
  • Optimize with NumPy: The transposition is optimized using NumPy's built-in transpose() function, and the first 5x5 block of the result is printed.

Python-Numpy Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Optimizing Standard Deviation calculation of large NumPy arrays.
Next: Optimizing element-wise multiplication of large 2D NumPy arrays.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

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/optimizing-transposition-of-large-numpy-arrays.php