slice = test[0, :, coords]
jest prosta indeksowanie, w efekcie mówiąc „podjęcia 0TH element pierwszego współrzędnych wszystkie z drugiej współrzędnej i [1,3,4], z trzecim współrzędnych”. A dokładniej, weź współrzędne (0, cokolwiek, 1) i uczyń go naszym pierwszym rzędem, (0, cokolwiek, 2) i uczyń go naszym drugim rzędem, i (0, cokolwiek, 3) i uczyńmy nasz trzeci rząd. Istnieje 5 whatevers, więc kończysz z (3,5).
Drugi przykład dałeś jest tak:
slice = test[0][:][coords]
W tym przypadku jesteś patrząc na (5,8) tablicy, a następnie biorąc 1., 3. i 4. elementy, które są 1., 3. i 4. rzędy, więc kończysz z tablicą (5,3).
Edytuj, aby omówić sprawę 2D:
W przypadku 2D, gdzie:
>>> test = np.reshape(np.arange(40),(5,8))
>>> test
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]])
zachowanie jest zbliżone.
Przypadek 1:
>>> test[:,[1,3,4]]
array([[ 1, 3, 4],
[ 9, 11, 12],
[17, 19, 20],
[25, 27, 28],
[33, 35, 36]])
jest po prostu wybranie kolumn 1,3 i 4.
Przypadek 2:
>>> test[:][[1,3,4]]
array([[ 8, 9, 10, 11, 12, 13, 14, 15],
[24, 25, 26, 27, 28, 29, 30, 31],
[32, 33, 34, 35, 36, 37, 38, 39]])
bierze 1., 3. i 4. elementem array, które są wierszami.
Nawiasem mówiąc, nie związane z pytaniem, 'slice()' jest pyton wbudowane, https://docs.python.org/2/library/functions.html#slice. Możesz go użyć, aby nadać nazwę obiektowi plasterka. – Scott