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.
import numpy as np
Now let’s create a 2d Numpy Array by passing a list of lists to numpy.array() i.e.
# Create a 2D Numpy adArray with 3 rows & 3 columns  Matrix nArr2D = np.array(([21, 22, 23], [11, 22, 33], [43, 77, 89]))
Contents of the 2D Numpy Array will be,
[[21 22 23] [11 22 33] [43 77 89]]
Now let’s see how to select elements from this 2D Numpy Array by index i.e.
Select a single element from 2D Numpy Array by index
We can use [][] operator to select an element from Numpy Array i.e.
ndArray[row_index][column_index]
Example 1:
Select the element at row index 1 and column index 2.
# Select element at row index 1 & column index 2 num = nArr2D[1][2] print('element at row index 1 & column index 2 is : ' , num)
Output:
element at row index 1 & column index 2 is : 33
Example 2:
Or we can pass the comma separated list of indices representing row index & column index too i.e.
# 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)
Output:
element at row index 1 & column index 2 is : 33
Select Rows by Index from a 2D Numpy Array
We can call [] operator to select a single or multiple row.Â To select a single row use,
ndArray[row_index]
It will return a complete row at given 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]]
Pandas Tutorials Learn Data Analysis with Python

Pandas Tutorial Part #1  Introduction to Data Analysis with Python

Pandas Tutorial Part #2  Basics of Pandas Series

Pandas Tutorial Part #3  Get & Set Series values

Pandas Tutorial Part #4  Attributes & methods of Pandas Series

Pandas Tutorial Part #5  Add or Remove Pandas Series elements

Pandas Tutorial Part #6  Introduction to DataFrame

Pandas Tutorial Part #7  DataFrame.loc[]  Select Rows / Columns by Indexing

Pandas Tutorial Part #8  DataFrame.iloc[]  Select Rows / Columns by Label Names

Pandas Tutorial Part #9  Filter DataFrame Rows

Pandas Tutorial Part #10  Add/Remove DataFrame Rows & Columns

Pandas Tutorial Part #11  DataFrame attributes & methods

Pandas Tutorial Part #12  Handling Missing Data or NaN values

Pandas Tutorial Part #13  Iterate over Rows & Columns of DataFrame

Pandas Tutorial Part #14  Sorting DataFrame by Rows or Columns

Pandas Tutorial Part #15  Merging or Concatenating DataFrames

Pandas Tutorial Part #16  DataFrame GroupBy explained with examples
Are you looking to make a career in Data Science with Python?
Data Science is the future, and the future is here now. Data Scientists are now the most soughtafter professionals today. To become a good Data Scientist or to make a career switch in Data Science one must possess the right skill set. We have curated a list of Best Professional Certificate in Data Science with Python. These courses will teach you the programming tools for Data Science like Pandas, NumPy, Matplotlib, Seaborn and how to use these libraries to implement Machine learning models.
Checkout the Detailed Review of Best Professional Certificate in Data Science with Python.
Remember, Data Science requires a lot of patience, persistence, and practice. So, start learning today.