Załóżmy, że mam tablicę numpy A o rozmiarze n x m x k i inną tablicę B o rozmiarze n x m, która ma indeksy od 1 do k. Chcę uzyskać dostęp do każdego n x m plasterka A za pomocą indeksu podanego w tym miejscu w B, dając mi tablicę o wielkości n x m.Numpy fantazyjne indeksowanie w wielu wymiarach
Edytuj: to najwyraźniej nie jest to, czego chcę! [[można to osiągnąć za pomocą take
takiego:
A.take(B)
]] end edit
Można to osiągnąć za pomocą ozdobnego indeksowanie? Myślę, że A[B]
dałby taki sam wynik, ale to wynik w tablicy o rozmiarach n x m x m x k (których tak naprawdę nie rozumiem).
Powodem nie chcę używać take
jest, że chcę, aby móc przypisać tej części czegoś, jak
A[B] = 1
Rozwiązanie działa tylko, że mam tak daleko jest
A.reshape(-1, k)[np.arange(n * m), B.ravel()].reshape(n, m)
ale na pewno musi być łatwiejszy sposób?
Drugi jest. Wygląda na to, że źle zrozumiałem (lub złapałem go wzdłuż niewłaściwej osi). Dzięki za wyjaśnienie. –