pytutorial/numpy/advanced_indexing
David Rotermund 16a01bed33
Create README.md
Signed-off-by: David Rotermund <54365609+davrot@users.noreply.github.com>
2023-12-14 17:57:00 +01:00
..
README.md Create README.md 2023-12-14 17:57:00 +01:00

Advanced Indexing

{:.no_toc}

* TOC {:toc}

The goal

Beside slicing there is something called advanced indexing

Questions to David Rotermund

Boolean Array

We can use Boolean arrays for more complicate indexing:

import numpy as np

a = np.arange(1,10).reshape(3,3)
b = np.zeros_like(a)

b[a.sum(axis=1) > 6, :] = 1

print(a)
print()
print(b)

Output:

[[1 2 3]
 [4 5 6]
 [7 8 9]]

[[0 0 0]
 [1 1 1]
 [1 1 1]]

Behind the curtains more or less this happens:

import numpy as np

a = np.arange(1, 10).reshape(3, 3)
b = np.zeros_like(a)

temp_0 = a.sum(axis=1)
temp_1 = temp_0 > 6
temp_2 = np.nonzero(temp_1)
b[temp_2] = 1

print(temp_0)
print()
print(temp_1)
print()
print(temp_2)
print()
print(b)

Output:

[ 6 15 24]

[False  True  True]

(array([1, 2]),)

[[0 0 0]
 [1 1 1]
 [1 1 1]]