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:
- NumPy – Select Elements By Condition
- 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
[[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 fromstart_index
toend_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.