MATLAB / Octave отображает этот трехмерный массив как 3 блока (2,4) матриц
>> reshape(1:24,2, 4, 3)
ans =
ans(:,:,1) =
1 3 5 7
2 4 6 8
ans(:,:,2) =
9 11 13 15
10 12 14 16
ans(:,:,3) =
17 19 21 23
18 20 22 24
Но здесь конечный размер является самым внешним. Это называется основной столбец или соглашение Фортрана. Обратите внимание на то, как значения увеличиваются, спускаясь вниз по столбцу.
Но у NumPy ведущее измерение является наиболее внешним. Значения увеличиваются по строкам. Это мажор строки или C-порядок
In [22]: np.arange(1,25).reshape(2,4,3)
Out[22]:
array([[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]],
[[13, 14, 15],
[16, 17, 18],
[19, 20, 21],
[22, 23, 24]]])
Этот порядок измерений соответствует вложенности в эквивалентном списке:
In [24]: np.arange(1,25).reshape(2,4,3).tolist()
Out[24]:
[[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],
[[13, 14, 15], [16, 17, 18], [19, 20, 21], [22, 23, 24]]]
Значение измерений исходит от приложения и пользователя,не из Python / NumPy. Изображения часто (высота, ширина, каналы). В вычислительном отношении может быть удобно сохранить 3 (или 4) элемента канала для одного пикселя вместе, то есть сделать это измерение последним. Таким образом, ваше (2,4,3) можно представить как (2,4) изображение с 3 цветами (RGB). Обычный numpy
отпечаток не лучший для визуализации этого.
Но если изображение имеет (400, 600, 3) форму, нам не нужна «печать» массива. Нам нужен график или изображение, изображение, которое отображает последнее измерение в виде цветов.