How to change memory layout of a 2D NumPy array to C order?
Write a NumPy program that creates a 2D array of shape (3, 3), change its memory layout to 'C' order using ascontiguousarray(), and print the array and its strides.
Sample Solution:
Python Code:
import numpy as np
# Create a 2D array of shape (3, 3)
array_2d = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# Change the memory layout to 'C' order
array_c_order = np.ascontiguousarray(array_2d)
# Print the array in 'C' order
print("Array in 'C' order:\n", array_c_order)
# Print the strides of the array in 'C' order
print("Strides of the array in 'C' order:", array_c_order.strides)
Output:
Array in 'C' order: [[1 2 3] [4 5 6] [7 8 9]] Strides of the array in 'C' order: (12, 4)
Explanation:
- Import NumPy library: We start by importing the NumPy library to handle array operations.
- Create a 2D array: We create a 2D array array_2d of shape (3, 3) using np.array().
- Change memory layout to 'C' order: We use np.ascontiguousarray() to ensure the array is stored in row-major ('C') order, resulting in array_c_order.
- Print the array: We print array_c_order to display the array in 'C' order.
- Print the strides: We print the strides of array_c_order using the strides attribute to show the number of bytes to step in each dimension when traversing the array.
Python-Numpy Code Editor:
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics