Вы должны пропустить axis=1
для этого.Если вы сделаете numpy.argmax(array)
, он будет искать max в сглаженном массиве, а затем вы можете сделать unravel_index
с формой массива, чтобы найти фактический индекс.Когда вы передаете ось, numpy будет искать максимум для этой оси для каждой записи в массиве.Например:
>>>data = numpy.array(range(8)).reshape(2, 4)
>>>data
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
>>>max_ix = numpy.argmax(data, axis=1)
>>>max_ix
array([3, 3])
>>>numpy.unravel_index(max_ix, data.shape)
(array([0, 0]), array([3, 3]))
Теперь, если вы пропустите ось:
>>>max_ix = numpy.argmax(data)
>>>max_ix
7
>>>numpy.unravel_index(max_ix, data.shape)
(1, 3)
Теперь, что произошло, вы сказали numpy дать вам индекс для максимумов в измерении 1, и он найдетмаксимумы «3» и «7» с индексами [3, 3]
.Тем не менее, вы не должны получить ошибку с вашим кодом, просто неверный конечный результат.