The ravel()
method flattens a NumPy array without changing its data.
import numpy as np
array1 = np.array([[0, 1], [2, 3]])
# flatten an array
array2 = np.ravel(array1)
print(array2)
# Output: [0 1 2 3]
ravel() Syntax
The syntax of ravel()
is:
numpy.ravel(array, order)
ravel() Arguments
The ravel()
method takes two arguments:
array
- an original array that is to be flattenedorder
(optional) - specifies the order in which the array elements are flattened
ravel() Return Value
The ravel()
method returns the flattened array.
Example 1: Flatten a Multidimensional Array
import numpy as np
array1 = np.array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]])
# flatten the array
array2 = np.ravel(array1)
print(array2)
Output
[0 1 2 3 4 5 6 7]
Using Optional Order Argument in ravel()
The order
argument specifies the order in which the array elements are flattened.
The order can be:
'C'
- flattens the elements row-wise (in C-style order)'F'
- flattens the elements column-wise (in Fortran-style order)'A'
- tries to preserve the original array's order, otherwise defaults to C-order.'K'
- flattens the elements in the order they occur in memory, and uses C-order by default.
import numpy as np
array1 = np.array([[[0, 1], [2, 3]],
[[4, 5], [6, 7]]])
# flatten the array row-wise
array2 = np.ravel(array1, order = 'C')
print("C:",array2)
# flatten the array column-wise
array3 = np.ravel(array1, order = 'F')
print("F:",array3)
# flatten the array to original array's order
array4 = np.ravel(array1, order = 'A')
print("A:",array2)
# flatten the array in the order they occur in memory)
array5 = np.ravel(array1, order = 'K')
print("K:",array3)
Output
C: [0 1 2 3 4 5 6 7] F: [0 4 2 6 1 5 3 7] A: [0 1 2 3 4 5 6 7] K: [0 4 2 6 1 5 3 7]
Difference Between Flatten and Ravel
The key differences between flatten()
and ravel()
are
flatten()
is anndarray
object method whereasravel()
is a library-level function. For example,
import numpy as np
array1 = np.array([[1, 2], [3, 4]])
# flatten is used as an array object
array2 = array1.flatten()
# ravel is used as a library function
array3 = np.ravel(array1)
print(array2)
print(array3)
Output
[1 2 3 4] [1 2 3 4]
ravel()
works with a list of arrays, butflatten()
doesn't.
import numpy as np
# create a list of arrays
array1 = [np.array([1, 2]), np.array([3, 4])]
# use ravel with a list of arrays
raveled_arr_list = np.ravel(array1)
print(raveled_arr_list)
# using flatten with a list of arrays
# raises an error
flattened_arr_list = array1.flatten()
print(flattened_arr_list)
Output
[1 2 3 4] Traceback (most recent call last): File "<string>", line 13, in <module> ERROR! AttributeError: 'list' object has no attribute 'flatten'
flatten()
always returns a copy of the original array whereasravel()
makes a copy only when necessary.
To learn more, visit NumPy flatten().