Numpy: np.sum с отрицательной осью - PullRequest
0 голосов

Интересно, что означает " Если ось отрицательна, она считается от последней до первой оси. " означает в документах , у меня есть тест это:

>>> t
array([[1, 2],
       [3, 4]])
>>> np.sum(t, axis=1)
array([3, 7])
>>> np.sum(t, axis=0)
array([4, 6])
>>> np.sum(t, axis=-2)
array([4, 6])

Все еще в замешательстве, мне нужно какое-то понятное объяснение.

1 Ответ

0 голосов
/ 28 апреля 2018

Первый взгляд на индексирование списка в списке длины 2:

>>> L = ['one', 'two']
>>> L[-1]  # last element
'two'
>>> L[-2]  # second-to-last element
'one'
>>> L[-3]  # out of bounds - only two elements in this list
# IndexError: list index out of range

Аргумент axis аналогичен, за исключением того, что он указывает размерность ndarray. Это будет легче увидеть, если использовать неквадратный массив:

>>> t = np.arange(1,11).reshape(2,5)
>>> t
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])
>>> t.ndim  # two-dimensional array
2
>>> t.shape  # a tuple of length t.ndim
(2, 5)

Итак, давайте рассмотрим различные способы вызова суммы:

>>> t.sum()  # all elements
55
>>> t.sum(axis=0)  # sum over 0th axis i.e. columns
array([ 7,  9, 11, 13, 15])
>>> t.sum(axis=1)  # sum over 1st axis i.e. rows
array([15, 40])
>>> t.sum(axis=-2)  # sum over -2th axis i.e. columns again (-2 % ndim == 0)
array([ 7,  9, 11, 13, 15])

Попытка t.sum(axis=-3) будет ошибкой, потому что у вас есть только 2 измерения в этом массиве. Вы можете использовать его на трехмерном массиве.

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