2015-09-11 324 views
3

我在python 3D矩阵如下:转换3D矩阵级联2D矩阵

import numpy as np 

a = np.ones((2,2,3)) 
a[0,0,0] = 2 
a[0,0,1] = 3 
a[0,0,2] = 4 

我想这个3D矩阵转换为一组2D矩阵。我试过np.reshape但它并没有解决我的问题。最终的形状,我感兴趣的是下面的级联vesrsion:

[[ 2. 1. 3. 1. 4. 1.] 
    [ 1. 1. 1. 1. 1. 1.]] 

然而,np.reshape给我下面的

[[ 2. 3. 4. 1. 1. 1.] 
    [ 1. 1. 1. 1. 1. 1.]] 

我怎样才能解决这个问题?

回答

2

使用transpose非常久远reshape -

a.transpose([0,2,1]).reshape(a.shape[0],-1) 

或者使用swapaxes,做同样的工作作为transpose非常久远reshape -

a.swapaxes(2,1).reshape(a.shape[0],-1) 

采样运行 -

In [66]: a 
Out[66]: 
array([[[ 2., 3., 4.], 
     [ 1., 1., 1.]], 

     [[ 1., 1., 1.], 
     [ 1., 1., 1.]]]) 

In [67]: a.transpose([0,2,1]).reshape(a.shape[0],-1) 
Out[67]: 
array([[ 2., 1., 3., 1., 4., 1.], 
     [ 1., 1., 1., 1., 1., 1.]]) 

In [68]: a.swapaxes(2,1).reshape(a.shape[0],-1) 
Out[68]: 
array([[ 2., 1., 3., 1., 4., 1.], 
     [ 1., 1., 1., 1., 1., 1.]])