In [103]: myArray = np.zeros((2, 5, 3))
...: content = np.arange(0,10).reshape((2, 5))
...: myArray[:,:,0] = content
...: myArray[:,:,1] = content*10
...: myArray[:,:,2] = content*100
...:
In [104]: myArray
Out[104]:
array([[[ 0., 0., 0.],
[ 1., 10., 100.],
[ 2., 20., 200.],
[ 3., 30., 300.],
[ 4., 40., 400.]],
[[ 5., 50., 500.],
[ 6., 60., 600.],
[ 7., 70., 700.],
[ 8., 80., 800.],
[ 9., 90., 900.]]])
In [105]: myArray.ravel()
Out[105]:
array([ 0., 0., 0., 1., 10., 100., 2., 20., 200., 3., 30.,
300., 4., 40., 400., 5., 50., 500., 6., 60., 600., 7.,
70., 700., 8., 80., 800., 9., 90., 900.])
Использование tostring
показывает тот же порядок:
In [108]: np.frombuffer(myArray.tostring(), dtype=float)
Out[108]:
array([ 0., 0., 0., 1., 10., 100., 2., 20., 200., 3., 30.,
300., 4., 40., 400., 5., 50., 500., 6., 60., 600., 7.,
70., 700., 8., 80., 800., 9., 90., 900.])
Чтобы выбрать последовательный фрагмент сохраненных данных, индексируйте по первому измерению:
In [112]: myArray[0,:,:]
Out[112]:
array([[ 0., 0., 0.],
[ 1., 10., 100.],
[ 2., 20., 200.],
[ 3., 30., 300.],
[ 4., 40., 400.]])
Индексирование при последнем обращении к значениям content
, но они не хранятся в буфере данных myArray
:
In [113]: myArray[:,:,0]
Out[113]:
array([[0., 1., 2., 3., 4.],
[5., 6., 7., 8., 9.]])