Problem
Mam dwa NumPy tablic A
i indices
.NumPy mecz wymiary indeksujące
A
ma wymiary M x N x 10000 indices
ma wymiary M x N x 5 (wyjściowy argpartition(A, 5)[:,:,:5]
). Chciałbym uzyskać tablicę m x n x 5 zawierającą elementy A
odpowiadającą indices
.
Próby
indices = np.array([[[5,4,3,2,1],[1,1,1,1,1],[1,1,1,1,1]],
[500,400,300,200,100],[100,100,100,100,100],[100,100,100,100,100]])
A = np.reshape(range(2 * 3 * 10000), (2,3,10000))
A[...,indices] # gives an array of size (2,3,2,3,5). I want a subset of these values
np.take(A, indices) # shape is right, but it flattens the array first
np.choose(indices, A) # fails because of shape mismatch.
Motywacja
Próbuję dostać 5 największych wartości A[i,j]
dla każdego i<m
, j<n
w kolejności sortowane przy użyciu np.argpartition
ponieważ tablice można uzyskać dość duże.