[Навыки разработки] · Понимание и применение оси в Numpy
1. Описание проблемы
При использовании Numpy нам часто приходится работать с массивом.Если нам нужно работать с определенной широтой массива, мы будем использовать параметр оси.
Общий учебник заключается в работе с осью для двумерной матрицы.Когда ось равна 0, направление рассчитывается как столбец, а когда ось равна 1, направление рассчитывается как строка.
Но такое описание не позволяет нам по-настоящему понять значение оси. Далее я создам трехмерный массив, чтобы вы лучше поняли ось.
2. Практическое объяснение
>>> import numpy as np
>>> arrays = np.arange(0,12).reshape([2,3,2])
>>> arrays
array([[[ 0, 1],
[ 2, 3],
[ 4, 5]],
[[ 6, 7],
[ 8, 9],
[10, 11]]])
>>> np.sum(arrays)
66
>>> np.sum(arrays,axis=0)
array([[ 6, 8],
[10, 12],
[14, 16]])
>>> np.sum(arrays,axis=1)
array([[ 6, 9],
[24, 27]])
>>> np.sum(arrays,axis=2)
array([[ 1, 5, 9],
[13, 17, 21]])
Почему такой результат, поможет разобраться автор:
Сначала мы создали новый массив формы (2, 3, 3)
1. При использовании np.sum(массивы) вычисляется сумма всех элементов.
2. При использовании np.sum(массивы, ось = 0) мы можем понять это так, взяв самый внешний [] как список, а также добавив и суммировав два элемента (каждый элемент представляет собой двумерный массив) внутри, поэтому результирующий массив имеет ту же форму, что и добавленные элементы.
2. При использовании np.sum(массивы, ось = 1) средний [ ] используется как список, а три элемента в нем (каждый элемент представляет собой одномерный массив) складываются и суммируются, поэтому полученный массив sum Добавленные элементы имеют одинаковую форму, но так как есть два средних [ ], они соединяются вместе.
3. При использовании np.sum(массивы, ось = 2) самый внутренний [ ] используется как список, а два элемента в нем (каждый элемент произносится человеком) складываются и суммируются, поэтому полученный массив Форма такая же, как и у элемента добавления, но так как есть два средних [ ], каждый средний [ ] содержит три [ ], и окончательная форма будет (2, 3).
Аналогично тому, что мы используем ту же концепцию при использовании индексов для выбора контента.
>>> import numpy as np
>>> arrays = np.arange(0,12).reshape([2,3,2])
>>> arrays
array([[[ 0, 1],
[ 2, 3],
[ 4, 5]],
[[ 6, 7],
[ 8, 9],
[10, 11]]])
>>> arrays[0,:,:]
array([[0, 1],
[2, 3],
[4, 5]])
>>> arrays[:,0,:]
array([[0, 1],
[6, 7]])
>>> arrays[:,:,0]
array([[ 0, 2, 4],
[ 6, 8, 10]])
>>>
Вы можете понять и проанализировать, почему это так, основываясь на том, что автор сказал выше.
hope this helps