In this article we will discuss how to select an element or a sub array from a Numpy Array by index.
Let’s create a Numpy Array using numpy.arange()
# Create a numpy ndArray npArray = np.arange(1, 20, 2) print(npArray)
Contents of the Numpy Array is as follows,
[ 1 3 5 7 9 11 13 15 17 19]
Now let’s discuss how to select elements from this Numpy Array by index.
Select a single element from Numpy Array by index
To select an element from Numpy Array , we can use [] operator i.e.
ndarray[index]
It will return the element at given index only.
Let’s use this to select an element at index 2 from Numpy Array we created above i.e. npArray,
# Select an element at index 2 (Index starts from 0) elem = npArray[2] print('Element at 2nd index : ' , elem)
Output:
Element at 2nd index : 5
Select a sub array from Numpy Array by index range
We can also select a sub array from Numpy Array using [] operator i.e.
ndArray[first:last]
It will return a sub array from original array with elements from index first to last – 1.
Let’s use this to select different sub arrays from original Numpy Array .
Contents of the original numpy Numpy Array we created above i.e. npArray is as follows,
[ 1 3 5 7 9 11 13 15 17 19]
Now let’s see some examples,
Example 1: Select a sub array with elements from index 1 to 6,
# Select elements from index 1 to 6 subArray = npArray[1:7]
Contents of sub Array is as follows,
[ 3 5 7 9 11 13]
Example 2: Select elements from beginning to index 3
subArray = npArray[:4]
Output:
[1 3 5 7]
Example 3: Select elements from 2nd index to end
subArray = npArray[2 : ]
Output:
[ 5 7 9 11 13 15 17 19]
Sub Numpy Array is just a view  Broadcasting
Sub Numpy Array returned by [] operator is just a view of original array i.e. data is not copied just a sub view of original ndarray is created.
Any modification in it will be reflected in original Numpy Array too.
Let’s confirm this.
Create a Numpy Array ,
npArray = np.arange(1, 20, 2)
It’s Contents are,
[ 1 3 5 7 9 11 13 15 17 19]
select a sub array from it,
subArray = npArray[1:7]
Contents of sub array is ,
[ 3 5 7 9 11 13]
Modify the contents of sub array,
# Change contents of sub array subArray[1] = 220
Sub array is just a view of original array i.e. data is not copied just a view of sub array is created. Any modification in it will be reflected in original Numpy Array too,
print('Contents of modified Sub Array : ', subArray) print('Contents of Original Array : ', npArray)
Output:
Contents of modified Sub Array : [ 3 220 7 9 11 13] Contents of Original Array : [ 1 3 220 7 9 11 13 15 17 19]
We modified the sub Numpy Array only but changes are reflected in original Numpy Array too.
In case of data analysis in data science we generally use Numpy Array with large data set, so to avoid unnecessary copy, ndarray added the feature of view only also called broadcasting.
Create a copy of Sub Array of Numpy Array
We can also create a copy of sub array using,
ndArray[index_range].copy()
It will return the copy of sub array.
Let’s see an example,
npArray = np.arange(1, 20, 2) print('Contents of Original Array : ', subArray) # Fetch a copy of sub array from index 1 to 6 subArray = npArray[1:7].copy() print('Contents of Sub Array : ', subArray) # Change contents of sub array subArray[1] = 220 print('Contents of modified Sub Array : ', subArray) print('Contents of Original Array : ', npArray)
Output:
Contents of Original Array : [ 3 220 7 9 11 13] Contents of Sub Array : [ 3 5 7 9 11 13] Contents of modified Sub Array : [ 3 220 7 9 11 13] Contents of Original Array : [ 1 3 5 7 9 11 13 15 17 19]
As sub Array is a copy not the view only, so changes made in it will not be reflected in main array.
Complete example is as follows,
import numpy as np def main(): # Create a numpy ndArray npArray = np.arange(1, 20, 2) print('Contents of numpy ndArray') print(npArray) print('*** Select an element by Index ***') # Select an element at index 2 (Index starts from 0) elem = npArray[2] print('Element at 2nd index : ' , elem) print('*** Select a by sub array by Index Range ***') # Select elements from index 1 to 6 subArray = npArray[1:7] print('Sub Array from 1st to 6th index are :', subArray) # Select elements from beginning to index 3 subArray = npArray[:4] print('Sub Array from beginning to 3rd index are :', subArray) # Select elements from 2nd index to end subArray = npArray[2:] print('Sub Array from 2nd index to end are :', subArray) print('*** Sub Array is just a View not the copy ***') npArray = np.arange(1, 20, 2) print('Contents of Original Array : ', subArray) # Select a sub array of elements from index 1 to 6 subArray = npArray[1:7] print('Contents of Sub Array : ', subArray) # Change contents of sub array subArray[1] = 220 ''' Sub array is just a view of original array i.e. data is not copied just a view of sub array is created. Any modification in it will be reflected in original nodArray too ''' print('Contents of modified Sub Array : ', subArray) print('Contents of Original Array : ', npArray) print('*** Create a copy of Sub Array of ndArray *** ') npArray = np.arange(1, 20, 2) print('Contents of Original Array : ', subArray) # Fetch a copy of sub array from index 1 to 6 subArray = npArray[1:7].copy() print('Contents of Sub Array : ', subArray) # Change contents of sub array subArray[1] = 220 ''' As subArray is a copy of sub array not the view only, so changes made in it will not be reflected in main array. ''' print('Contents of modified Sub Array : ', subArray) print('Contents of Original Array : ', npArray) if __name__ == '__main__': main()
Output:
Contents of numpy ndArray [ 1 3 5 7 9 11 13 15 17 19] *** Select an element by Index *** Element at 2nd index : 5 *** Select a by sub array by Index Range *** Sub Array from 1st to 6th index are : [ 3 5 7 9 11 13] Sub Array from beginning to 3rd index are : [1 3 5 7] Sub Array from 2nd index to end are : [ 5 7 9 11 13 15 17 19] *** Sub Array is just a View not the copy *** Contents of Original Array : [ 5 7 9 11 13 15 17 19] Contents of Sub Array : [ 3 5 7 9 11 13] Contents of modified Sub Array : [ 3 220 7 9 11 13] Contents of Original Array : [ 1 3 220 7 9 11 13 15 17 19] *** Create a copy of Sub Array of ndArray *** Contents of Original Array : [ 3 220 7 9 11 13] Contents of Sub Array : [ 3 5 7 9 11 13] Contents of modified Sub Array : [ 3 220 7 9 11 13] Contents of Original Array : [ 1 3 5 7 9 11 13 15 17 19]
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.