# Python Numpy : Select rows / columns by index from a 2D Numpy Array | Multi Dimension

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

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

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```

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.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

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

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

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.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

### 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 sought-after 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.

##### Join a LinkedIn Community of Python Developers

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to Top