В октавном сеансе:
>> x = reshape(1:24,4,3,2);
>> save -v7 'test.mat' x
С Python loadmat
сохраняет форму и F
заказ:
In [200]: data = loadmat('test.mat')
In [208]: data['x'].shape
Out[208]: (4, 3, 2)
In [209]: data['x'].ravel(order='F')
Out[209]:
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.])
Transpose создаст массив (2,3,4)
In [210]: data['x'].T
Out[210]:
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.]]])
transpose
может принимать параметр заказа, например data['x'].transpose(2,0,1)
.
(я не знаком с dicom
, но, надеюсь, это иллюстрирует, как loadmat
обрабатывает трехмерный массив из MATLAB.)