Inny formularz do indeksowania w Pythonie

Oct 08 2020

Idę na kurs uczenia maszynowego, aw przeglądzie biblioteki numpy używam metody indeksowania, której nigdy wcześniej nie widziałem. Zdefiniowaliśmy a = np.array([[1,2],[3,4],[5,6]]). Dwie nowe tablice są następnie utworzony: np.array([a[0,0], a[1,1], a[2,1]]. To jest sposób indeksowania, który znam. Sposób indeksowania, że nie wiem, czy to: print(a[[0,1,2],[0,1,1]]). Czy ktoś mógłby mi pomóc w wyjaśnieniu na temat tej najnowszej formy indeksowania?

Odpowiedzi

1 Marat Oct 08 2020 at 05:15

Gdy ntablice są przekazywane, gdzie njest liczbą wymiarów tablicy, są one używane jako indeksy dla odpowiednich wymiarów. a[[0,1,2],[0,1,1]]jest równa[a[0,0], a[1,1], a[2,1]]

Zacytuję numpy docs:

... Z każdego wiersza należy wybrać określony element. Indeks wiersza to po prostu [0, 1, 2], a indeks kolumny określa element do wyboru dla odpowiedniego wiersza, tutaj [0, 1, 0]. Używając obu razem, zadanie można rozwiązać za pomocą zaawansowanego indeksowania:

x = np.array([[1, 2], [3, 4], [5, 6]])

x[[0, 1, 2], [0, 1, 0]]
array([1, 4, 5])
1 Gabitohh Oct 08 2020 at 05:29

Wywołuje indeksowanie tablic całkowitych . W naszym przykładzie uzyskujesz dostęp do [[0,1,2],[0,1,1]]indeksów tablicy 1x3 o nazwie a. Oznacza to, że otrzymujesz od a:

[
    the first element of the first array,contained in this 1x3 array,
    the second element of the second array, contained in this big array,
    the second element of the third array, contained in the same array
]

Drukowanie, otrzymasz wyjście [1 4 6], ponieważ są to elementy w określonych pozycjach ( (0,0), (1,1), (2,1)). Możesz to sobie wyobrazić jako schemat kolumn i wierszy :

[[rows],[colums]] # vertically speaking

Wybierasz wiersze elementów, które chcesz umieścić w pierwszej tablicy podrzędnej , a kolumny w drugiej.