У меня есть двумерный массив, скажем,
x = np.random.rand(10, 3)
array([[ 0.51158246, 0.51214272, 0.1107923 ],
[ 0.5210391 , 0.85308284, 0.63227215],
[ 0.57239625, 0.06276943, 0.1069803 ],
[ 0.71627613, 0.66454443, 0.56771438],
[ 0.24595493, 0.01007568, 0.84959605],
[ 0.99158904, 0.25034553, 0.00144037],
[ 0.43292656, 0.9247424 , 0.5123086 ],
[ 0.07224077, 0.57230282, 0.88522979],
[ 0.55665913, 0.20119776, 0.58865823],
[ 0.55129624, 0.26226446, 0.63070611]])
Затем я нахожу индексы максимальных элементов вдоль столбцов:
indexes = np.argmax(x, axis=0)
array([5, 6, 7])
Пока все хорошо.
Но как мне получить эти элементы?То есть как мне получить ?some_operation?(x, indexes) == [0.99158904, 0.9247424, 0.88522979]
?
Обратите внимание, что мне нужны и индексы, и связанные с ними значения.
Лучшее, что я мог придумать, было x[indexes, range(x.shape[1])]
, но выглядитдовольно сложный и неэффективный.Есть ли более идиоматический способ?