axis = 3 для 3D-массива в numpy?

Sep 21 2020

Я не понимаю, почему я не получаю ошибку для оси = 3 в следующих

import numpy as np

a = np.arange(27)
b = np.arange(27)

a = a.reshape((3,3,3))
b = b.reshape((3,3,3))

c = np.mean([a,b],axis=3)

Я использовал приведенный выше код как способ понять, как работают оси в numpy.

Из этой статьи, в которой показан случай 2D:

я выяснил, что для многомерной оси ось 0 всегда находится вдоль строк (размер y), ось 1 (размер x) - вдоль столбцов. Итак, в моем случае, когда у меня есть трехмерный массив, я бы подумал, что у меня будет еще 1 ось, ось = 2 вдоль «направления z». Тем не менее, numpy позволяет мне также вводить ось = 3? В каком направлении идет эта индексация? Как numpy использует эту ось для вычисления среднего значения?

Ответы

3 MichaelSzczesny Sep 21 2020 at 21:42

Вы создаете 4D-массив в вызове

c = np.mean([a,b],axis=3) # [a,b] adds 4th dimension
np.array([a,b]).shape

Вывод

 (2, 3, 3, 3)