I have a 3-dimensional array a
of shape (n, m, l)
. I extract one column j
from it’s last axis and compute the maximum index along the first axis like follows:
sub = a[:, :, j] # shape (n, m) wheremax = np.argmax(sub, axis=0) # this have a shape of m
Now I’d like to slice the original array a
to get all the information based on the index where the column j
is maximal. I.e. I’d like an numpythonic way to do the following using array broadcasting or numpy functions:
new_arr = np.zeros((m, l)) for i, idx in enumerate(wheremax): new_arr[i, :] = a[idx, i, :] a = new_arr
Is there one?
Advertisement
Answer
As @hpaulj mentionned in the comments, using a[wheremax, np.arange(m)]
did the trick.