簡體   English   中英

通過 numpy.reshape() 交換 3D numpy 數組的列和行

[英]Swapping the columns and rows of a 3D numpy array by numpy.reshape()

現在我有一個形狀為 (2,3,4) 的 3D numpy 數組,如下所示:

[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]

現在,我想通過交換數組的最后 2 個維度來將數組重塑為 (2,4,3),如下所示:

[[[ 0  4  8]
  [ 1  5  9]
  [ 2  6 10]
  [ 3  7 11]]

 [[12 16 20]
  [13 17 21]
  [14 18 22]
  [15 19 23]]]

在 numpy.reshape 的文檔中,reshape numpy arrays 有兩種類型的命令,包括'C'和'F'。 我嘗試使用它們,結果如下:

  1. 對於訂單='C':
    [[[ 0  1  2]
      [ 3  4  5]
      [ 6  7  8]
      [ 9 10 11]]
    
     [[12 13 14]
      [15 16 17]
      [18 19 20]
      [21 22 23]]]
  1. 對於訂單='F':
 [[[ 0  5 10]
  [ 4  9  3]
  [ 8  2  7]
  [ 1  6 11]]

 [[12 17 22]
  [16 21 15]
  [20 14 19]
  [13 18 23]]]

我也嘗試過連續進行整形,但仍然無法達到我想要的形狀。 有誰知道如何按所需順序重塑數組?

它可以通過最后兩個軸上的轉置來完成:

arr = np.array([[[ 0 , 1,  2,  3],
                 [ 4 , 5,  6,  7],
                 [ 8 , 9, 10, 11]],
                [[12, 13, 14, 15],
                 [16, 17, 18, 19],
                 [20, 21, 22, 23]]])

np.transpose(arr, axes = (0,2,1))
array([[[ 0,  4,  8],
        [ 1,  5,  9],
        [ 2,  6, 10],
        [ 3,  7, 11]],

       [[12, 16, 20],
        [13, 17, 21],
        [14, 18, 22],
        [15, 19, 23]]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM