将3D矩阵转换为级联2D矩阵

时间:2015-09-11 14:01:46

标签: python numpy matrix reshape

我在python中有一个3D矩阵,如下所示:

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,但它没有解决我的问题。我感兴趣的最终形状是以下级联的内容:

 [[ 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.]]

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

transposereshape -

一起使用
a.transpose([0,2,1]).reshape(a.shape[0],-1)

或使用与transpose完成相同工作的swapaxes以及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.]])