This article is all about converting 2D Numpy Array to a 1D Numpy Array. Changing a 2D NumPy array into a 1D array returns in an array containing the same elements as the original, but with only one row. Want to learn how to convert 2d Array into 1d Array using Python? Then, stay tuned to this tutorial and jump into the main heads via the available links shown below:
- Convert 2D Numpy array / Matrix to a 1D Numpy array using flatten()
- Convert 2D Numpy array to 1D Numpy array using numpy.ravel()
- Convert a 2D Numpy array to a 1D array using numpy.reshape()
- numpy.reshape() and -1 size
- numpy.reshape() returns a new view object if possible
- Convert 2D Numpy array to 1D array but Column Wise
Convert 2D Numpy array / Matrix to a 1D Numpy array using flatten()
Python Numpy provides a function flatten() to convert an array of any shape to a flat 1D array.
Firstly, it is required to import the numpy module,
import numpy as np
Syntax:
ndarray.flatten(order='C') ndarray.flatten(order='F') ndarray.flatten(order='A')
Order: In which items from the array will be read
Order=’C’: It will read items from array row-wise
Order=’F’: It will read items from array row-wise
Order=’A’: It will read items from array-based on memory order
Suppose we have a 2D Numpy array or matrix,
[7 4 2]
[5 3 6]
[2 9 5]
Which we have to convert in a 1D array. Let’s use this to convert a 2D numpy array or matrix to a new flat 1D numpy array,
import numpy as np # Create a 2D numpy array from list of lists arr = np.array([[7, 4, 2], [5, 3, 6], [2, 9, 5]]) # get a flatten 1D copy of 2D Numpy array flat_array = arr.flatten() print('1D Numpy Array:') print(flat_array)
Output:
1D Numpy Array: [7 4 2 5 3 6 2 9 5]
If we made any changes in our 1D array it will not affect our original 2D array.
import numpy as np # Create a 2D numpy array from list of lists arr = np.array([[7, 4, 2], [5, 3, 6], [2, 9, 5]]) # get a flatten 1D copy of 2D Numpy array flat_array = arr.flatten() print('1D Numpy Array:') print(flat_array) # Modify the flat 1D array flat_array[0] = 50 print('Modified Flat Array: ') print(flat_array) print('Original Input Array: ') print(arr)
Output:
1D Numpy Array: [7 4 2 5 3 6 2 9 5] Modified Flat Array: [50 4 2 5 3 6 2 9 5] Original Input Array: [[7 4 2] [5 3 6] [2 9 5]]
Also Check:
- Pandas: count rows in a dataframe | all or those only that satisfy a condition
- Python Numpy: Select rows/columns by index from a 2D Numpy Array | Multi Dimension
Convert 2D Numpy array to 1D Numpy array using numpy.ravel()
Numpy have a built-in function ‘numpy.ravel()’ that accepts an array element as parameter and returns a flatten 1D array.
Syntax:
numpy.ravel(input_arr, order='C')
Let’s make use of this syntax to convert 2D array to 1D array,
import numpy as np # Create a 2D numpy array from list of lists arr = np.array([[7, 4, 2], [5, 3, 6], [2, 9, 5]]) # Get a flattened view of 2D Numpy array flat_array = np.ravel(arr) print('Flattened 1D Numpy array:') print(flat_array)
Output:
Flattened 1D Numpy array: [7 4 2 5 3 6 2 9 5]
If we made any changes in our 1D array using numpy.ravel() it will also affect our original 2D array.
import numpy as np # Create a 2D numpy array from list of lists arr = np.array([[7, 4, 2], [5, 3, 6], [2, 9, 5]]) # Get a flattened view of 2D Numpy array flat_array = np.ravel(arr) print('Flattened 1D Numpy array:') print(flat_array) # Modify the 2nd element in flat array flat_array[1] = 12 # Changes will be reflected in both flat array and original 2D array print('Modified Flattened 1D Numpy array:') print(flat_array) print('2D Numpy Array:') print(arr)
Output:
Flattened 1D Numpy array: [7 4 2 5 3 6 2 9 5] Modified Flattened 1D Numpy array: [ 7 12 2 5 3 6 2 9 5] 2D Numpy Array: [[ 7 12 2] [ 5 3 6] [ 2 9 5]]
Convert a 2D Numpy array to a 1D array using numpy.reshape()
Numpy provides a built-in function reshape() to convert the shape of a numpy array,
It accepts three arguments-
- a: Array which we have to be reshaped
- newshape: Newshape can be a tuple or integer
- order: The order in which items from the input array will be used
import numpy as np # Create a 2D numpy array from list of lists arr = np.array([[7, 4, 2], [5, 3, 6], [2, 9, 5]]) # convert 2D array to a 1D array of size 9 flat_arr = np.reshape(arr, 9) print('1D Numpy Array:') print(flat_arr)
Output:
1D Numpy Array: [7 4 2 5 3 6 2 9 5]
In the above example, we have pass 9 as an argument because there were a total of 9 elements (3X3) in the 2D input array.
numpy.reshape() and -1 size
This function can be used when the input array is too big and multidimensional or we just don’t know the total elements in the array. In such scenarios, we can pass the size as -1.
import numpy as np # Create a 2D numpy array from list of lists arr = np.array([[7, 4, 2], [5, 3, 6], [2, 9, 5]]) # convert 2D array to a 1D array without mentioning the actual size flat_arr = np.reshape(arr, -1) print('1D Numpy Array:') print(flat_arr)
Output:
1D Numpy Array: [7 4 2 5 3 6 2 9 5]
numpy.reshape() returns a new view object if possible
With the help of reshape() function, we can view the input array and any modification done in the view object will be reflected in the original input too.
import numpy as np # Create a 2D numpy array from list of lists arr = np.array([[7, 4, 2], [5, 3, 6], [2, 9, 5]]) flat_arr = np.reshape(arr,-1) print('1D Numpy Array:') print(flat_arr) # Modify the element at the first row and first column in the 1D array arr[0][0] = 11 print('1D Numpy Array:') print(flat_arr) print('2D Numpy Array:') print(arr)
Output:
1D Numpy Array: [7 4 2 5 3 6 2 9 5] 1D Numpy Array: [11 4 2 5 3 6 2 9 5] 2D Numpy Array: [[11 4 2] [ 5 3 6] [ 2 9 5]]
Convert 2D Numpy array to 1D array but Column Wise
If we pass the order parameter in reshape() function as “F” then it will read 2D input array column-wise. As we will show below-
import numpy as np # Create a 2D numpy array from list of lists arr = np.array([[7, 4, 2], [5, 3, 6], [2, 9, 5]]) # Read 2D array column by column and create 1D array from it flat_arr = np.reshape(arr, -1, order='F') print('1D Numpy Array:') print(flat_arr)
Output:
1D Numpy Array: [7 5 2 4 3 9 2 6 5]