【问题标题】:Converting 3D matrix to cascaded 2D Matrices将 3D 矩阵转换为级联 2D 矩阵
【发布时间】:2015-12-08 03:01:07
【问题描述】:

我在 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.]]

我该如何解决这个问题?

【问题讨论】:

    标签: python numpy matrix reshape


    【解决方案1】:

    使用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.]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 2011-01-16
      • 2012-05-24
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      相关资源
      最近更新 更多