The numpy.ndarray.flatten()
function in the NumPy array library is used to flatten an array of elements in different orders.
The flattening of a NumPy n-dimensional array in python is a procedure to return a copy of an array that is collapsed to a one-dimensional NumPy array.
The flattening of the NumPy array can be done in 4 different orders, those are:
- C-style or Row-Major style Order: the ordering of consecutive row elements residing next to each other.
- F-Style (Fortran Style) or Column-Major Order: the ordering of consecutive column elements residing next to each other.
- A-style: The ordering can be two types here.
- 1) column-major order if the NumPy array is Fortran Contiguous
- 2)Row-Major order if the NumPy array is Fortran Non-Contiguous.
- K-Style Order: flatten in the order that elements occur in memory.
The numpy.ndarray.flatten()
method will return a copy of the original array. Since the n-dimensional output array is a copy of the original NumPy array, changing the output array will not affect the value of the original NumPy array.
Syntax
The syntax of numpy.ndarray.flatten()
method is:
ndarray.flatten(order='C')
Parameters
The numpy.ndarray.flatten()
method takes a single optional argument.
- order: {‘C’, ’F’, ‘A’, ’K’}: (Optional)– the type of order of flattening which can be any of the values as follows {‘C’, ’F’, ’A’, ’K’}. If no value is provided it takes the default value ‘C’ which is row-major style order.
Return Value
The method ndarray.flatten()
returns a copy of a 1-dimensional array with the same type of elements.
Example 1: How to flatten an array using NumPy ndarray.flatten() method
The method ndarray.flatten()
flattens the input array into a single-dimensional array. If the order
argument is not provided or if the order
value is passed as None
, then the array returns would be default row-major ordering style also called C-Style ordering.
import numpy as np
# initialize the numpy n-D array
arr_in = np.array([[[2, 17], [45, 78]], [[88, 92], [60, 76]], [[76, 33], [20, 18]]])
print("The input array is:\n", arr_in)
print("The flattened numpy array in default order(C-style order) is:")
# flatten function will flatten input array to default ordering(C-)
print(arr_in.flatten())
Output
The input array is:
[[[ 2 17]
[45 78]]
[[88 92]
[60 76]]
[[76 33]
[20 18]]]
The flattened numpy array in default order(C-style order) is:
[ 2 17 45 78 88 92 60 76 76 33 20 18]
Example 2: Flattening an array using numpy.flatten() method with C-style ordering
If we pass order='C'
as an argument for the method ndarray.flatten()
, the method flattens the input array into a single-dimensional array and returns the array in row-major order style.
import numpy as np
# initialize the numpy n-D array
arr_in = np.array([[[2, 17], [45, 78]], [[88, 92], [60, 76]], [[76, 33], [20, 18]]])
print("The input array is:\n", arr_in)
print(
"The flattened numpy array in Row major order(C-style order) using order = 'C' is:"
)
# flatten row major ordering using order = 'C'
print(arr_in.flatten(order="C"))
Output
The input array is:
[[[ 2 17]
[45 78]]
[[88 92]
[60 76]]
[[76 33]
[20 18]]]
The flattened numpy array in Row major order(C-style order) using order = 'C' is:
[ 2 17 45 78 88 92 60 76 76 33 20 18]
Example 3: Flattening an array using numpy.flatten() method with Fortran-style ordering
If we pass order='F'
as an argument for the method ndarray.flatten()
, the method flattens the input array into a single-dimensional array and returns the array in column-major order style also called as F-Style (Fortan Style).
import numpy as np
# initialize the numpy n-D array
arr_in = np.array([[[2, 17], [45, 78]], [[88, 92], [60, 76]], [[76, 33], [20, 18]]])
print("The input array is:\n", arr_in)
print(
"The flattened numpy array using fortran order(Column major order) using order = 'F' is:"
)
# flatten fortran ordering using order = 'F'
print(arr_in.flatten(order="F"))
Output
The input array is:
[[[ 2 17]
[45 78]]
[[88 92]
[60 76]]
[[76 33]
[20 18]]]
The flattened numpy array using fortran order(Column major order) using order = 'F' is:
[ 2 88 76 45 60 20 17 92 33 78 76 18]
Example 4: Flattening an array using numpy.flatten() method with A-style ordering
If we pass order='A'
as an argument for the method ndarray.flatten()
, the method flattens the input array into a single-dimensional array and returns the array in Fortran contiguous ordering in memory.
import numpy as np
# initialize the numpy n-D array
arr_in = np.array([[[2, 17], [45, 78]], [[88, 92], [60, 76]], [[76, 33], [20, 18]]])
print("The input array is:\n", arr_in)
print(
"The flattened numpy array in column-major order if array is Fortran contiguous in memory using order = 'A'is:"
)
# flattening numpy array in column-major order if array is Fortran contiguous in memory
print(arr_in.flatten(order="A"))
Output
The input array is:
[[[ 2 17]
[45 78]]
[[88 92]
[60 76]]
[[76 33]
[20 18]]]
The flattened numpy array in column-major order if array is Fortran contiguous in memory using order = 'A'is:
[ 2 17 45 78 88 92 60 76 76 33 20 18]
Example 5: Flattening an array using numpy.flatten() method with K-style ordering
If we pass order='K'
as an argument for the method ndarray.flatten()
, the method flattens the input array into a single-dimensional array and returns the 1-D array as elements occur in memory either in contiguous or non-contiguous.
import numpy as np
# initialize the numpy n-D array
arr_in = np.array([[[2, 17], [45, 78]], [[88, 92], [60, 76]], [[76, 33], [20, 18]]])
print("The input array is:\n", arr_in)
print("The array is flattened to order of elements occurs in memory is:")
# flattened to order of elements occurs in memory
print(arr_in.flatten(order="K"))
Output
The input array is:
[[[ 2 17]
[45 78]]
[[88 92]
[60 76]]
[[76 33]
[20 18]]]
The array is flattened to order of elements occurs in memory is:
[ 2 17 45 78 88 92 60 76 76 33 20 18]
Conclusion
The flattening of a NumPy n-dimensional array in python is a procedure to return an array that is collapsed to a one-dimensional NumPy array. We use the numpy.ndarray.flatten()
function to flatten an array of elements in different orders.
Reference: NumPy Library