In this article, we explore how to select elements, rows, columns, and sub-arrays from a 2D NumPy array, which is an essential skill in data analysis and manipulation.

**Importing NumPy Module**

First, we import NumPy, which is a fundamental package for scientific computing in Python:

import numpy as np

NumPy provides support for large multi-dimensional arrays and matrices, along with a collection of mathematical functions to operate on these arrays.

**Creating a 2D NumPy Array**

We create a 2D array (matrix) using `np.array()`

by passing a list of lists:

import numpy as np nArr2D = np.array([[21, 22, 23], [11, 22, 33], [43, 77, 89]]) print(nArr2D)

**Output:**

### Frequently Asked:

- Select Rows / Columns by Index in NumPy Array
- Get ith Column from 2D NumPy Array in Python
- Select Elements from NumPy Array by Index Range
- NumPy – Select Elements By Condition

[[21 22 23] [11 22 33] [43 77 89]]

Each inner list becomes a row in the 2D array. The above code creates a 3×3 matrix.

## Select an Element from 2D NumPy Array

We can select a single element from the array using its row and column indices:

import numpy as np nArr2D = np.array([[21, 22, 23], [11, 22, 33], [43, 77, 89]]) 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

This code snippet accesses the second row (`index 1`

as indexing starts at 0) and the third column (`index 2`

). The output is `33`

, the element at that position.

Alternatively, we can use a tuple of indices:

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

This is a more concise way to achieve the same result.

## Select Rows from 2D NumPy Array

- To select an entire row from a 2D Array, we can pass the row index in [] operator. Like
`arr[row_index]`

. It will return a complete row at given index. - To select multiple rows use:
`arr[start_index: end_index , :]`

. It will return rows from`start_index`

to`end_index â€“ 1`

and will include all columns.

Let’s see an example, To select entire 2nd row from a 2D Array, we can pass the row index `1`

in [] operator. Like this,

import numpy as np nArr2D = np.array([[21, 22, 23], [11, 22, 33], [43, 77, 89]]) # Select row at index 1 i.e. 2nd row row = nArr2D[1] print('Row at Index 1:', row)

**Output:**

Row at Index 1: [11 22 33]

This snippet selects the second row of the array. Remember, in Python, indexing starts at 0.

For selecting multiple rows:

rows = nArr2D[1:3, :] print('Rows from Index 1 to 2:\n', rows)

**Output:**

Rows from Index 1 to 2: [[11 22 33] [43 77 89]]

Here, `1:3`

is a slice indicating the second and third rows (excluding row at index 3).

## Select Columns from 2D NumPy Array

To select a column, pass the column index along with the rows information in the [] operator of NumPy Array.

arr[ : , 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 see an example,

import numpy as np nArr2D = np.array([[21, 22, 23], [11, 22, 33], [43, 77, 89]]) # Select 2nd Column from 2D Array column = nArr2D[:, 1] print('Column at Index 1:', column)

**Output:**

Column at Index 1: [22 22 77]

The `:`

means “select all rows,” and `1`

specifies the second column.

For multiple columns:

columns = nArr2D[:, 1:3] print('Columns from Index 1 to 2:\n', columns)

**Output:**

[[22 23] [22 33] [77 89]]

This selects columns 2 and 3 (`1:3`

slice).

## Select a Sub Matrix from a NumPy Array

To select sub 2d Numpy Array we can pass the row & column index range in [] operator i.e.

arr[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, to select a sub-matrix from a 2D NumPy Array,

import numpy as np nArr2D = np.array([[21, 22, 23], [11, 22, 33], [43, 77, 89]]) # Select sub-Array i.e. from rows 1 to 2 and columns 1 to 2 sub2DArr = nArr2D[1:3, 1:3] print('Sub 2D Array:\n', sub2DArr)

**Output:**

Sub 2D Array: [[22 33] [77 89]]

This snippet selects rows 2 to 3 and columns 2 to 3, forming a smaller 2×2 matrix.

## Selecting a View vs Selecting a Copy from a NumPy Array

Modifying a view will affect the original array:

import numpy as np nArr2D = np.array([[21, 22, 23], [11, 22, 33], [43, 77, 89]]) nArr2D[1] = [100, 100, 100] print('Modified Array:\n', nArr2D) print('Original Array:\n', nArr2D)

**Output:**

Modified Array: [[ 21 22 23] [100 100 100] [ 43 77 89]] Original Array: [[ 21 22 23] [100 100 100] [ 43 77 89]]

Changing the second row in the view alters the original array.

To avoid this, create a copy:

import numpy as np nArr2D = np.array([[21, 22, 23], [11, 22, 33], [43, 77, 89]]) row_copy = nArr2D[1].copy() row_copy[:] = 200 print('Modified Array:\n', row_copy) print('Original Array:\n', nArr2D)

**Output:**

Modified Array: [200 200 200] Original Array: [[21 22 23] [11 22 33] [43 77 89]]

Modifying `row_copy`

doesn’t change `nArr2D`

because `row_copy`

is an independent copy.

## Summary

Today, we learned how to select rows & columns from a 2D NumPy Array in Python.