В Октаве:
>> x=0:23;
>> x=reshape(x,2,4,3);
>> x
x =
ans(:,:,1) =
0 2 4 6
1 3 5 7
ans(:,:,2) =
8 10 12 14
9 11 13 15
ans(:,:,3) =
16 18 20 22
17 19 21 23
>> save -v7 test3d x
В ipython:
In [192]: data = io.loadmat('test3d')
In [194]: x=data['x']
In [195]: x
Out[195]:
array([[[ 0., 8., 16.],
[ 2., 10., 18.],
[ 4., 12., 20.],
[ 6., 14., 22.]],
[[ 1., 9., 17.],
[ 3., 11., 19.],
[ 5., 13., 21.],
[ 7., 15., 23.]]])
In [196]: x.shape
Out[196]: (2, 4, 3)
Отображается как в Октаве:
In [197]: x[:,:,0]
Out[197]:
array([[0., 2., 4., 6.],
[1., 3., 5., 7.]])
loadmat
загрузил его как F
заказ, с той же формой 2,4,3.А справа ravel
производит исходные числа 0:23:
In [200]: x.ravel(order='F')
Out[200]:
array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,
13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23.])
Транспонирование x
создает массив 'C' (3,4,2) порядка:
In [207]: x.T[0]
Out[207]:
array([[0., 1.],
[2., 3.],
[4., 5.],
[6., 7.]])
In [208]: y=np.arange(24).reshape(3,4,2)
In [209]: y[0]
Out[209]:
array([[0, 1],
[2, 3],
[4, 5],
[6, 7]])