Как работает NumPy Argmax? - PullRequest
0 голосов
/ 22 мая 2018

Итак, я знаю, что numy argmax извлекает максимальное значение вдоль оси.Таким образом,

x = np.array([[12,11,10,9],[16,15,14,13],[20,19,18,17]])
print(x)
print(x.sum(axis=1))
print(x.sum(axis=0))

будет выводить,

[[12 11 10  9]
 [16 15 14 13]
 [20 19 18 17]]


[42 58 74]

[48 45 42 39]

Это имеет смысл, поскольку сумма по оси 1 (строка) равна [42 58 74], а ось 0 (столбец) равна [48 45 42 39].Тем не менее, я запутался в том, как работает argmax.Насколько я понимаю, argmax должен возвращать максимальное число вдоль оси.Ниже мой код и вывод.

Код: print(np.argmax(x,axis=1)).Выход: [0 0 0]

Код: print(np.argmax(x,axis=0)).Вывод: [2 2 2 2]

Откуда 0 и 2?Я намеренно использовал набор более сложных целочисленных значений (9..20), чтобы различать 0 и 2 и целочисленные значения внутри массива.

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Исправление: axis=0 относится к строкам, а не к столбцам.axis=1 относится к столбцам, а не к строкам.

x = np.array([[12,11,10,9],[16,15,14,13],[20,19,18,17]])
  print(x)

[[12 11 10  9]
[16 15 14 13]
[20 19 18 17]]

np.argmax(x, axis=0)
array([2, 2, 2, 2] # third row, index 2 of each of the 4 columns

np.argmax(x, axis=1)
array([0, 0, 0]  # first column, index 0 of each of the three rows.
0 голосов
/ 22 мая 2018

np.argmax(x,axis=1) возвращает индекс максимального значения в каждой строке.

axis=1 означает «вдоль оси 1», то есть строки.

[[12 11 10  9]    <-- max at index 0
 [16 15 14 13]    <-- max at index 0
 [20 19 18 17]]   <-- max at index 0

Таким образом, его вывод равен [0 0 0].

Это похоже на np.argmax(x,axis=0), но теперь он возвращает индекс максимума в каждом столбце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...