Давайте воссоздадим данные с меньшими «изображениями»:
In [68]: R = np.arange(4)
In [69]: G = np.arange(10,14)
In [70]: B = np.arange(20,24)
In [71]: rgb = np.hstack([R,G,B])
In [72]: rgb
Out[72]: array([ 0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23])
Это похоже на одно из ваших изображений, не так ли? Первые N значений «красные», следующие N «зеленые» и т. Д.>
Изменить на 2d:
In [73]: rgb.reshape(3,4)
Out[73]:
array([[ 0, 1, 2, 3],
[10, 11, 12, 13],
[20, 21, 22, 23]])
изменить на 3d:
In [74]: rgb.reshape(3,2,2)
Out[74]:
array([[[ 0, 1],
[ 2, 3]],
[[10, 11],
[12, 13]],
[[20, 21],
[22, 23]]])
«строка-ряд» означает, что первое измерение является самым внешним и изменяется медленнее. Последнее измерение - внутреннее.
In [75]: rgb.reshape(2,2,3)
Out[75]:
array([[[ 0, 1, 2],
[ 3, 10, 11]],
[[12, 13, 20],
[21, 22, 23]]])
reshape
сохраняет порядок элементов данных. Это просто меняет их вид, разделение, так сказать на плоскости, строки и столбцы.