#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)