Menu
Coddy logo textTech

Indeksowanie według wymiarów

Lekcja 13 z 18 w kursie Podstawy NumPy w Coddy.

Numpy obsługuje niezwykle potężne narzędzie — indeksowanie wymiarów.

Aby indeksować wymiar, używamy dwukropka :. Dwukropek wybiera wszystkie elementy z indeksu, w którym został umieszczony. Załóżmy na przykład, że mamy tablicę o kształcie ary.shape # --> (2, 1, 3, 1). Umieszczenie dwukropka : w ary[:, 0, 0, 0] wybierze dwa najbardziej wysunięte w lewo elementy kształtu, a dla każdego z nich wyodrębni element o indeksie zerowym z pozostałych wymiarów.

Uwaga: Położenie dwukropka w brackets [] wskazuje wymiar, który indeksujemy, czyli:

  • ary[:, 0, 0, 0] Indeksuje wymiar 4D
  • ary[0, :, 0, 0] Indeksuje wymiar 3D
  • ary[0, 0, :, 0] Indeksuje wymiar 2D
  • ary[0, 0, 0, :] Indeksuje wymiar 1D
  • ary[:, :, 0, 0] Indeksuje wymiary 4D i 3D
  • itd.

Przykład 1

ary = np.array([
	[1, 2], 
	[3, 4]
])
ary[:, 0] # --> [1, 3]
ary[0, :] # --> [1, 2]

Dwukropek wybiera wszystkie elementy z określonego indeksu i przechodzi do następnego indeksu.

W naszym przypadku: 

  • ary[:, 0] Wybieramy wszystkie pierwsze elementy, a z każdego z nich wybieramy element o indeksie 0.
  • ary[0, :] Wybieramy pierwszy element, a z niego wybieramy wszystkie elementy.

Przykład 2

Tablica 3D

ary = np.array([
	[[1, 2], [3, 4]],
	[[5, 6], [7, 8]]
])
ary[:, 0, :] # --> [[1, 2], [5, 6]]
ary[:, :, 0] # --> [[1, 3], [5, 7]]
  • ary[:, 0, :] Wybieramy wszystkie elementy, następnie pierwszy element, a na końcu wszystko, co się w nim znajduje.
  • ary[:, :, 0] Wybieramy wszystkie elementy, następnie wszystkie te elementy, a na końcu wybieramy pierwszy element z każdego z nich.
  • Jak myślisz, jaki będzie wynik dla ary[0, :, :]?

Przykład 3

Pobierz pierwszy i ostatni indeks z każdego wiersza

x = np.array([
	[ 0,  1,  2,  3,  4,  5],
	[ 6,  7,  8,  9, 10, 11],
	[12, 13, 14, 15, 16, 17],
	[18, 19, 20, 21, 22, 23],
])
x[:, np.array([0, -1])]
>>> [0, 5, 6, 11, 12, 17, 18, 23]

Przykład 4

Tablica o kształcie (2, 1, 3, 1), tak jak w początkowym przykładzie

ary = np.array([
    [
        [
            [1],[2],[3]
        ]
    ],
    [
        [
            [4],[5],[6]
        ]
    ]
])
ary[:, 0, 0, 0] # --> [1, 4]
ary[0, :, 0, 0] # --> [1]
ary[0, 0, :, 0] # --> [1, 2, 3]
ary[0, 0, 0, :] # --> [1]

Uwaga: Można również używać poznanej w lekcji Slicing składni wycinania: start:stop:step.

  • ary[:, 0:5, 2:3, :]
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

challenge icon

Wyzwanie

Łatwy

Mając tablicę 3D ary, pobierz 2., 3. i 4. liczbę z każdej tablicy 1D

Spróbuj swoich sił

import numpy as np
'''
ary looks like:
array([[[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9],
        [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]],

       [[20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
        [30, 31, 32, 33, 34, 35, 36, 37, 38, 39]],

       [[40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
        [50, 51, 52, 53, 54, 55, 56, 57, 58, 59]],

       [[60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
        [70, 71, 72, 73, 74, 75, 76, 77, 78, 79]],

       [[80, 81, 82, 83, 84, 85, 86, 87, 88, 89],
        [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]]])
'''
ary = np.arange(0, 100).reshape(5, 2, 10) # don't change ary
res = ary[] # <-- Complete indices
print(str(res).replace("\n", "")) # don't change this line

Wszystkie lekcje w sekcji Podstawy NumPy

Poćwicz samodzielnie: Kompilator Python online