Updated On : Jul-10,2020  numpy, basics

# Learning Numpy - Simple Tutorial For Beginners - NumPy - Advance Indexing - Part 9¶

It is possible to make a selection from ndarray that is a non-tuple sequence, ndarray object of integer or Boolean data type, or a tuple with at least one item being a sequence object. Advanced indexing always returns a copy of the data. As against this, the slicing only presents a view.

There are two types of Advanced IndexingInteger and Boolean.

Integer Indexing This mechanism helps in selecting any arbitrary item in an array based on its Ndimensional index. Each integer array represents the number of indexes into that dimension. When the index consists of as many integer arrays as the dimensions of the target ndarray, it becomes straightforward.

In the following example, one element of specified column from each row of ndarray object is selected. Hence, the row index contains all row numbers, and the column index specifies the element to be selected.

### Example 1¶

In [2]:
```import numpy as np

x = np.array([[1, 2], [3, 4], [5, 6]])
y = x[[0,1,2], [0,1,0]]
print (y)
```
```[1 4 5]
```

### Example 2¶

In [5]:
```import numpy as np
x = np.array([[ 0,  1,  2],[ 3,  4,  5],[ 6,  7,  8],[ 9, 10, 11]])

print ('Our array is:')
print (x)
print ('\n')

rows = np.array([[0,0],[3,3]])
cols = np.array([[0,2],[0,2]])
y = (x[rows,cols])

print ('The corner elements of this array are:')
print (y)
```
```Our array is:
[[ 0  1  2]
[ 3  4  5]
[ 6  7  8]
[ 9 10 11]]

The corner elements of this array are:
[[ 0  2]
[ 9 11]]
```

### Example 3¶

In [7]:
```import numpy as np
x = np.array([[ 0,  1,  2],[ 3,  4,  5],[ 6,  7,  8],[ 9, 10, 11]])

print ('Our array is:')
print (x)
print ('\n')

# slicing
z = x[1:4,1:3]

print ('After slicing, our array becomes:')
print (z)
print ('\n')

# using advanced index for column
y = x[1:4,[1,2]]

print ('Slicing using advanced index for column:')
print (y)
```
```Our array is:
[[ 0  1  2]
[ 3  4  5]
[ 6  7  8]
[ 9 10 11]]

After slicing, our array becomes:
[[ 4  5]
[ 7  8]
[10 11]]

Slicing using advanced index for column:
[[ 4  5]
[ 7  8]
[10 11]]
```

### Boolean Array Indexing¶

This type of advanced indexing is used when the resultant object is meant to be the result of Boolean operations, such as comparison operators.

### Example 1¶

In [8]:
```import numpy as np
x = np.array([[ 0,  1,  2],[ 3,  4,  5],[ 6,  7,  8],[ 9, 10, 11]])

print ('Our array is:')
print (x)
print ('\n')

# Now we will print the items greater than 5
print ('The items greater than 5 are:')
print (x[x > 5])
```
```Our array is:
[[ 0  1  2]
[ 3  4  5]
[ 6  7  8]
[ 9 10 11]]

The items greater than 5 are:
[ 6  7  8  9 10 11]
```

### Example 2¶

In [9]:
```import numpy as np
a = np.array([np.nan, 1,2,np.nan,3,4,5])
print (a[~np.isnan(a)])
```
```[1. 2. 3. 4. 5.]
```

### Example 3¶

In [10]:
```import numpy as np
a = np.array([1, 2+6j, 5, 3.5+5j])
print (a[np.iscomplex(a)])
```
```[2. +6.j 3.5+5.j]
```
Dolly Solanki

## Support Us

Thank You for visiting our website. If you like our work, please support us so that we can keep on creating new tutorials/blogs on interesting topics (like AI, ML, Data Science, Python, Digital Marketing, SEO, etc.) that can help people learn new things faster. You can support us by clicking on the Coffee button at the bottom right corner. We would appreciate even if you can give a thumbs-up to our article in the comments section below.

## Want to Share Your Views? Have Any Suggestions?

If you want to

• provide some suggestions on topic
• share your views
• include some details in tutorial
• suggest some new topics on which we should create tutorials/blogs
Please feel free to let us know in the comments section below (Guest Comments are allowed). We appreciate and value your feedbacks.