【问题标题】:Reshape 3D numpy matrix to 2D numpy matrix, maintaining row position将 3D numpy 矩阵重塑为 2D numpy 矩阵,保持行位置
【发布时间】:2021-09-14 10:44:08
【问题描述】:

作为一个简化示例,我有一个 3D numpy 矩阵,如下所示:

a = np.array([[[1,2],
               [4,np.nan],
               [7,8]],

              [[7,6],
               [4,3],
               [1,0]],

              [[0,1],
               [3,np.nan]
               [6,7]],

              [[8,7],
               [5,4],
               [2,1]]])
>>> a.shape
(4,3,2)

我想在保持行位置的同时将此 3D 矩阵 (a) 重塑为 2D 矩阵 (b)。这是目标:

b = np.array([[1,2,7,6,0,1,8,7],
              [4,np.nan,4,3,3,np.nan,5,4],
              [7,8,1,0,6,7,2,1]])
>>> b.shape
(3,8)

我想我应该能够通过.reshape().transpose() 的某种组合来实现这一点?但我对这种矩阵操作的东西还很陌生,这有点令人难以置信。到目前为止,我尝试过的任何事情都无法让我到达那里......

【问题讨论】:

    标签: python arrays numpy matrix reshape


    【解决方案1】:

    您可以先将前 2 个轴与 transpose 交换(这样形状将是 (3, 4, 2)),然后是 reshape

    >>> a.transpose(1, 0, 2).reshape(3, 8)
    
    array([[ 1.,  2.,  7.,  6.,  0.,  1.,  8.,  7.],
           [ 4., nan,  4.,  3.,  3., nan,  5.,  4.],
           [ 7.,  8.,  1.,  0.,  6.,  7.,  2.,  1.]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-29
      • 2011-01-16
      • 1970-01-01
      • 2021-10-05
      • 2016-08-25
      • 2016-11-08
      • 1970-01-01
      • 2016-05-11
      相关资源
      最近更新 更多