In this article we will discuss how to select elements from a 2D Numpy Array . Elements to select can be a an element only or single/multiple rows & columns or an another sub 2D array. First of all, let’s import numpy module i.e. Now let’s create a 2d Numpy Array by passing a list of lists to numpy.array[] i.e. Contents of the 2D Numpy Array will be, Now let’s see how to select elements from this 2D Numpy Array by index i.e. We can use [][] operator to select an element from Numpy Array i.e. Example 1: Select the element at row index 1 and column index 2. Output: Example 2: Advertisements Or we can pass
the comma separated list of indices representing row index & column index too i.e. Output: We can call [] operator to select a single or multiple row. To select a single row use, It will return a complete row at given index.import numpy as np
# Create a 2D Numpy adArray with 3 rows & 3 columns | Matrix
nArr2D = np.array[[[21, 22, 23], [11, 22, 33], [43, 77, 89]]]
[[21 22 23]
[11 22 33]
[43 77 89]]
Select a single element from 2D Numpy Array by index
ndArray[row_index][column_index]
# Select element at row index 1 & column index 2
num = nArr2D[1][2]
print['element at row index 1 & column index 2 is : ' , num]
element at row index 1 & column index 2 is : 33
# Another way to select element at row index 1 & column index 2
num = nArr2D[1, 2]
print['element at row index 1 & column index 2 is : ', num]
element at row index 1 & column index 2 is : 33
ndArray[row_index]
To select multiple rows use,
ndArray[start_index: end_index , :]
It will return rows from start_index to end_index – 1 and will include all columns.
Let’s use this,
Contents of the 2D a Numpy Array
nArr2D created above are,
[[21 22 23] [11 22 33] [43 77 89]]
Let’s select a row at index 2 i.e.
# Select a Row at index 1 row = nArr2D[1] print['Contents of Row at Index 1 : ' , row]
Output:
Contents of Row at Index 1 : [11 22 33]
Select multiple rows from index 1 to 2 i.e.
# Select multiple rows from index 1 to 2 rows = nArr2D[1:3, :] print['Rows from Index 1 to 2 :'] print[rows]
Output:
Rows from Index 1 to 2 : [[11 22 33] [43 77 89]]
Select multiple rows from index 1 to last index
# Select multiple rows from index 1 to last index rows = nArr2D[1: , :] print['Rows from Index 1 to last row :'] print[rows]
Output:
[[11 22 33] [43 77 89]]
Select Columns by Index from a 2D Numpy Array
To select a single column use,
ndArray[ : , column_index]
It will return a complete column at given index.
To select multiple columns use,
ndArray[ : , start_index: end_index]
It will return columns from start_index to end_index – 1.
Let’s use these,
Contents of the 2D Numpy Array nArr2D created above are,
[[21 22 23] [11 22 33] [43 77 89]]
Select a column at index 1
# Select a column at index 1 column = nArr2D[:, 1] print['Contents of Column at Index 1 : ', column]
Output:
Contents of Column at Index 1 : [22 22 77]
Select multiple columns from index 1 to 2
# Select multiple columns from index 1 to 2 columns = nArr2D[: , 1:3] print['Column from Index 1 to 2 :'] print[columns]
Output:
Column from Index 1 to 2 : [[22 23] [22 33] [77 89]]
Select multiple columns from index 1 to last index
# Select multiple columns from index 1 to last index columns = nArr2D[:, 1:]
Output is same as above because there are only 3 columns 0,1,2. So 1 to last columns means columns at index 1 & 2.
Select a Sub Matrix or 2d Numpy Array from another 2D Numpy Array
To select sub 2d Numpy Array we can pass the row & column index range in [] operator i.e.
ndArray[start_row_index : end_row_index , start_column_index : end_column_index]
It will return a sub 2D Numpy Array for given row and column range.
Let’s use these,
Contents of the 2D Numpy Array nArr2D created
at start of article are,
[[21 22 23] [11 22 33] [43 77 89]]
Select a sub 2D Numpy Array from row indices 1 to 2 & column indices 1 to 2
# Select a sub 2D array from row indices 1 to 2 & column indices 1 to 2 sub2DArr = nArr2D[1:3, 1:3] print['Sub 2d Array :'] print[sub2DArr]
Output:
Sub 2d Array : [[22 33] [77 89]]
Selected Row or Column or Sub Array is View only
Contents of the Numpy Array selected using [] operator returns a View only i.e. any modification in returned sub array will be reflected in original Numpy Array .
Let’s check this,
Contents of the 2D Numpy Array nArr2D created at start are,
[[21 22 23] [11 22 33] [43 77 89]]
Select a row at index 1 from 2D array i.e.
# Select row at index 1 from 2D array row = nArr2D[1]
Contents of row :
[11 22 33]
Now modify the contents of row i.e.
# Change all the elements in selected sub array to 100 row[:] = 100
New contents of the row will be
[100 100 100]
Modification in sub array will be reflected in main Numpy Array too. Updated Contents of the 2D Numpy Array nArr2D are,
[[ 21 22 23] [100 100 100] [ 43 77 89]]
Get a copy of 2D Sub Array from 2D Numpy Array using ndarray.copy[]
to the copy instead of view in sub array use copy[] function.
Let’s check
this,
Create a 2D Numpy adArray with3 rows & columns | Matrix
# Create a 2D Numpy adArray with3 rows & columns | Matrix nArr2D = np.array[[[21, 22, 23], [11, 22, 33], [43, 77, 89]]]
Content of nArr2D is,
[[ 21 22 23] [100 100 100] [ 43 77 89]]
Select a copy of row at index 1 from 2D array and set all the elements in selected sub array to 100
# Select a copy of row at index 1 from 2D array row = nArr2D[1].copy[] # Set all the elements in selected sub array to 100 row[:] = 100
Here, sub array is a copy of original array so, modifying it will not affect the original Numpy Array
Contents of the modified sub array row is,
[100 100 100]
Contents of the original Numpy Array is,
[[21 22 23] [11 22 33] [43 77 89]]
Complete example is as follows,
import numpy as np def main[]: # Create a 2D Numpy adArray with 3 rows & 3 columns | Matrix nArr2D = np.array[[[21, 22, 23], [11, 22, 33], [43, 77, 89]]] print['Contents of 2D Array : '] print[nArr2D] print['*** Select an element by index from a 2D ndArray'] # Select element at row index 1 & column index 2 num = nArr2D[1][2] print['element at row index 1 & column index 2 is : ' , num] # Another way to select element at row index 1 & column index 2 num = nArr2D[1, 2] print['element at row index 1 & column index 2 is : ', num] print['*** Select Rows by Index from a 2D ndArray ***'] # Select a Row at index 1 row = nArr2D[1] print['Contents of Row at Index 1 : ' , row] # Select multiple rows from index 1 to 2 rows = nArr2D[1:3, :] print['Rows from Index 1 to 2 :'] print[rows] # Select multiple rows from index 1 to last index rows = nArr2D[1: , :] print['Rows from Index 1 to last row :'] print[rows] print['*** Select Columns by Index from a 2D ndArray ***'] # Select a column at index 1 column = nArr2D[:, 1] print['Contents of Column at Index 1 : ', column] # Select multiple columns from index 1 to 2 columns = nArr2D[: , 1:3] print['Column from Index 1 to 2 :'] print[columns] # Select multiple columns from index 1 to last index columns = nArr2D[:, 1:] print['Column from Index 1 to last index :'] print[columns] print['*** Select a Sub Matrix or 2d Array from another 2D ndArray ***'] print['Original ndArray'] print[nArr2D] # Select a sub 2D array from row indices 1 to 2 & column indices 1 to 2 sub2DArr = nArr2D[1:3, 1:3] print['Sub 2d Array :'] print[sub2DArr] print['*** Sub Array is View only ***'] print['Original ndArray'] print[nArr2D] # Select row at index 1 from 2D array row = nArr2D[1] print['Contents of row / sub array'] print[row] # Change all the elements in selected sub array to 100 row[:] = 100 # As sub array is a copy so, changes in it will be reflected in original array too print['Contents of modified row / sub array'] print[row] print['Original ndArray'] print[nArr2D] print['*** Fetching a copy of 2D Sub Array from 2D ndArray ***'] # Create a 2D Numpy adArray with3 rows & columns | Matrix nArr2D = np.array[[[21, 22, 23], [11, 22, 33], [43, 77, 89]]] # Select a copy of row at index 1 from 2D array row = nArr2D[1].copy[] # Set all the elements in selected sub array to 100 row[:] = 100 ''' Here sub array is a copy of original array so, modifying it will not affect the original ndArray ''' print['Contents of modified row / sub array'] print[row] print['Original ndArray'] print[nArr2D] if __name__ == '__main__': main[]
Output:
Contents of 2D Array : [[21 22 23] [11 22 33] [43 77 89]] *** Select an element by index from a 2D ndArray element at row index 1 & column index 2 is : 33 element at row index 1 & column index 2 is : 33 *** Select Rows by Index from a 2D ndArray *** Contents of Row at Index 1 : [11 22 33] Rows from Index 1 to 2 : [[11 22 33] [43 77 89]] Rows from Index 1 to last row : [[11 22 33] [43 77 89]] *** Select Columns by Index from a 2D ndArray *** Contents of Column at Index 1 : [22 22 77] Column from Index 1 to 2 : [[22 23] [22 33] [77 89]] Column from Index 1 to last index : [[22 23] [22 33] [77 89]] *** Select a Sub Matrix or 2d Array from another 2D ndArray *** Original ndArray [[21 22 23] [11 22 33] [43 77 89]] Sub 2d Array : [[22 33] [77 89]] *** Sub Array is View only *** Original ndArray [[21 22 23] [11 22 33] [43 77 89]] Contents of row / sub array [11 22 33] Contents of modified row / sub array [100 100 100] Original ndArray [[ 21 22 23] [100 100 100] [ 43 77 89]] *** Fetching a copy of 2D Sub Array from 2D ndArray *** Contents of modified row / sub array [100 100 100] Original ndArray [[21 22 23] [11 22 33] [43 77 89]]