2015-09-11 366 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.]])