Indeksowanie warunkowe i sliceing to dwa różne sposoby indeksowania elementów tablicy w bibliotece NumPy.
Indeksowanie warunkowe polega na wybraniu elementów tablicy za pomocą podanej maski lub podanej sekwencji indeksów. Można w ten sposób wybrać dowolne elementy tablicy, które spełniają określone warunki lub są zawarte w podanej sekwencji indeksów.
Oto kilka przykładów indeksowania warunkowego w bibliotece NumPy:
- Indeksowanie elementów tablicy za pomocą podanej maski:
import numpy as np
# Tworzenie tablicy 1D z losowymi liczbami
a = np.random.randint(10, size=10)
print(a) # [2 3 4 6 3 7 9 5 5 1]
# Tworzenie maski z wartościami większymi od 5
mask = a > 5
print(mask) # [False False False True False True True False False False]
# Indeksowanie elementów tablicy za pomocą maski
b = a[mask]
print(b) # [6 7 9]
2. Indeksowanie elementów tablicy za pomocą podanej sekwencji indeksów:
import numpy as np
# Tworzenie tablicy 1D z losowymi liczbami
a = np.random.randint(10, size=10)
print(a) # array([8, 3, 5, 7, 5, 0, 2, 5, 0, 9])
# Indeksowanie elementów tablicy za pomocą sekwencji indeksów
b = a[[2, 3, 5]] # pierwszy indeks to 'zero' dlatego dla wartości indeksu 2 otrzymaliśmy 5
print(b) # array([5, 7, 0])
import numpy as np
# Tworzenie tablicy 2D z losowymi liczbami
a = np.random.randint(10, size=(4,4))
print(a)
array([[3, 7, 9, 7],
[2, 2, 7, 8],
[5, 5, 4, 4],
[3, 6, 2, 9]])
# Indeksowanie elementów tablicy za pomocą sekwencji indeksów
b = a[[0, 2, 3], [2, 3, 1]] #Rząd 0 i kolumna 2, rząd 2 i kolumna 3, rząd 3 i kolumna 1.
print(b)
array([9, 4, 6])
import numpy as np
# Tworzenie tablicy 3D z losowymi liczbami
a = np.random.randint(10, size=(4,4,4))
print(a)
# [[[4 6 8 1]
# [7 3 9 7]
# [5 9 4 4]
# [7 7 5 8]]
#
# [[9 3 4 8]
# [5 0 3 7]
# [7 4 9 7]
# [5 9 7 5]]
#
# [[3 2 2 5]
# [3 7 5 6]
# [3 4 8 0]
# [2 4 3 8]]
#
# [[4 0 9 3]
# [6 9 4 0]
# [9 7 5 6]
# [4 5 5 2]]]
# Indeksowanie elementów tablicy za pomocą sekwencji indeksów
b = a[[0, 3], [1, 3], [2, 1]]
# Tabela 0, Rząd 1, Kolumna 2 --> 9
# Tabela 3, Rząd 3, Kolumna 1 --> 5
print(b) # [9 5]