reshape and keep x,y,z ordering
Michael Selik
michael.selik at gmail.com
Tue Jun 7 09:16:37 EDT 2016
On Tue, Jun 7, 2016 at 7:31 AM Heli <hemla21 at gmail.com> wrote:
> Hello,
> I have a question regarding reshaping numpy array.
>
> I either have a 1D array that I need to reshape to a 3D array or a 3D
> array to reshape to a 1d numpy array.
>
> In both of these cases it is assumed that data follows x,y,z ordering.
> and I use the following to reshape the numpy array.
>
> new_1d_array=np.reshape(3d.transpose(),(3d_nx*3d_ny*3d_nz,))
>
> new_3d_array=np.reshape(1d,((3d_x,3d_y,3d_z)).transpose())
>
> My question is if there is anyway that reshape would keep x,y,z ordering
> that would not require transpose? and if there is a better more efficient
> way to do this?
>>> a = np.arange(9).reshape(3,3)
>>> a
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> a.flatten()
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> a.flatten('F')
array([0, 3, 6, 1, 4, 7, 2, 5, 8])
Does this work for you?
The flatten method normally goes row by row, but you can specify FORTRAN
style column by column flattening.
More information about the Python-list
mailing list