Numpy argmax на нескольких осях, определяемых другими векторами

#python #numpy #vectorization #argmax

#python #numpy #векторизация #argmax

Вопрос:

Допустим, у меня есть 3D-матрица с именем A с формой (100,4,100). А также два вектора по 200 значений каждый, созданные следующим образом:

 b = np.random.randint(0, 3, 200)
c = np.random.randint(0, 99, 200)
  

Как я могу эффективно найти argmax для каждого из A[b, c,:]?

Я могу выполнить цикл for, который будет выглядеть следующим образом:

 for i in range(200):
    np.argmax(A[b[i], c[i], :])
  

Есть ли у меня какие-либо более эффективные варианты, позволяющие избежать цикла for?

Комментарии:

1. A[b,c].argmax(1) ?

2. Спасибо, это именно то, что мне было нужно! Хотите создать ответ, и я его приму?

3. Я бы посоветовал вам опубликовать свой собственный ответ на это.

Ответ №1:

Решение, предложенное Divakar выше, заключается в использовании ndarray.argmax, чтобы это выглядело как A[b,c].argmax(1)