How to change memory layout of a 2D NumPy array to C order?
NumPy: Memory Layout Exercise-10 with Solution
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:
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
Previous: How to reshape and modify a 1D NumPy array to a 3x3 matrix?
Next: How to change memory layout of a 2D NumPy array to F order?
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/change-memory-layout-of-a-2d-numpy-array-to-c-order.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics