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,

**Advertisements**

[[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]]

**Advertisements**

Thanks for reading.