Я хотел найти максимум двумерного массива вдоль оси = 0, и я не хочу включать значение в индекс строки. Я не доволен этим решением, потому что мне нужно запустить его на миллион строк, и я не хочу использовать цикл for здесь. Я попытался numpy.argmax , но он вычисляет максимальное значение строки, включая значение в индексе строки.
Мой 2D-массив
Arry=([[1, 0.5, 0.3, 0, 0.2],
[0, 1, 0.2, 0.8, 0],
[0, 1, 1, 0.3, 0],
[0, 0, 0, 1, 0]])
Ожидаемый результат
[1, 3, 1]
Первая строка [1, 0,5, 0,3, 0, 0,2] имеет максимальное значение по индексу 1, то есть 0,5, поскольку значение 1 соответствует индексу строки 0, аналогично во втором ряду максимальное значение равно 0,8, то есть индекс 3 и 4-я строка не имеет максимального значения, так как все равны нулю
Мой код
import numpy as np
for idx,subarry in enumerate(Arry):
newlist=np.delete(subarry, idx)
idx_min=min(np.where(subarry==np.max(newlist))[0])
if idx_min != 0: min_elem_idx.append(idx_min)
print(min_elem_idx)
[1, 3, 1]
Я ищу Pythonic способ достичь этого без использования цикла for