Sliceing

Indeksowanie warunkowe i sliceing to dwa różne sposoby indeksowania elementów tablicy w bibliotece NumPy.

Sliceing w bibliotece NumPy polega na wybraniu kolejnych elementów tablicy za pomocą podanego zakresu indeksów. Można w ten sposób wybrać elementy tablicy w postaci podtablicy o określonym kształcie.

Składnia sliceing wygląda następująco: a[start:stop:step], gdzie:

  • a to tablica, z której chcemy wybrać elementy
  • start to indeks początkowy zakresu (domyślnie 0)
  • stop to indeks końcowy zakresu (domyślnie długość tablicy)
  • step to odstęp pomiędzy elementami (domyślnie 1)

Nie zawsze trzeba używać zapisu z dwoma dwukropkami:

  1. Aby wybrać kolejne elementy tablicy, należy podawać indeks początkowy oraz indeks końcowy oddzielone dwukropkiem (:). Indeksy są niemodyfikowalne i oznaczają miejsca w tablicy, w których sliceing ma się rozpocząć i zakończyć.
  2. Aby wybrać elementy tablicy z określonym krokiem, należy podawać indeks początkowy, indeks końcowy i krok oddzielone dwukropkiem (:). Krok określa, co ile elementów ma być wybierany. Na przykład, jeśli chcemy wybrać co drugi element tablicy, należy ustawić krok na 2.
  3. Aby wybrać wszystkie elementy tablicy, można pominąć indeks początkowy i końcowy lub ustawić je na None.
  4. Aby wybrać elementy tablicy od końca, należy użyć indeksu ujemnego.

Przykłady:

  1. Wybranie wszystkich elementów tablicy 1D:
import numpy as np

# Tworzenie tablicy 1D z losowymi liczbami
a = np.random.randint(10, size=10)
print(a)  # [8 5 2 9 1 7 6 5 0 5]

# Wybranie wszystkich elementów tablicy
b = a[:]
print(b)  # [8 5 2 9 1 7 6 5 0 5]

2. Wybranie elementów tablicy 2D w kształcie podtablicy 3×2:

import numpy as np

# Tworzenie tablicy 2D z losowymi liczbami
a = np.random.randint(10, size=(4,4))
print(a)
#Rząd0 [[8 5 7 7]
#Rząd1  [2 9 3 3]
#Rząd2  [1 7 6 5]
#Rząd3  [0 5 8 6]]

# Wybranie elementów tablicy w kształcie podtablicy 3x2
b = a[:3, 1:3] #wybierz rzędy 0,1,2 i kolumny 1,2.
print(b)
# [[5 7]
#  [9 3]
#  [7 6]]

3. Wybranie co drugiego elementu tablicy 1D:

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]

# Wybranie co drugiego elementu tablicy
b = a[::2]
print(b)  # [2 4 3 9 5]

4. Odwrócenie kolejności elementów tablicy 1D:

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]

# Odwrócenie kolejności elementów tablicy
b = a[::-1]
print(b)  # [1 5 5 5 9 7 3 6 4 3 2]