Sự cố
Tôi có hai mảng gọn gàng, A
và indices
.Kích thước lập chỉ mục kết hợp khó khăn
A
có kích thước m x n x 10000. indices
có kích thước m x n x 5 (đầu ra từ argpartition(A, 5)[:,:,:5]
). Tôi muốn lấy một mảng m x n x 5 chứa các phần tử của A
tương ứng với indices
.
Nỗ lực
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.
Động lực
Tôi đang cố gắng để có được 5 giá trị lớn nhất của A[i,j]
cho mỗi i<m
, j<n
theo thứ tự sắp xếp sử dụng np.argpartition
vì các mảng có thể nhận được khá lớn.