python將三維數組展開成二維數組

以前寫過一篇:python將兩個二維array疊加成三維array的實現方法

這篇文章嘗試用“曲線救國”的方法來解決二維數組疊加成三維數組的問題。

但天道有輪迴,蒼天繞過誰。好不容易把數組疊加在一塊兒了,新的需求又出現了:將三維數組展開成二維數組。有借有還,再借不難。今天就來解決把三維數組展開成二維數組的問題。

相對於疊加三維數組,numpy對展開數組支持得很好,只需要用好np.reshape(A,(a,b)) 函數即可。

用到的參數:

  • A:需要被重新組合的數組
  • (a,b): 各個維度的長度。比如要想展開成二維數組,那麼(a,b)就是展開成a行b列。

當然,如果某一個維度長度不確定,也可以用-1代替。

看下面這個例子:

A = np.reshape(np.arange(24),(4,3,2)) ##生成一個數值從0到23,維度爲(4,3,2)的數組
print(A)
print('A的維度:',A.shape)
B = np.reshape(A,(-1,2))
print(B)
print('B的維度:',B.shape)

結果:

A:
[[[ 0  1]
  [ 2  3]
  [ 4  5]]

 [[ 6  7]
  [ 8  9]
  [10 11]]

 [[12 13]
  [14 15]
  [16 17]]

 [[18 19]
  [20 21]
  [22 23]]]
A的維度:(4,3,2)

B:
      [[ 0,  1],
       [ 2,  3],
       [ 4,  5],
       [ 6,  7],
       [ 8,  9],
       [10, 11],
       [12, 13],
       [14, 15],
       [16, 17],
       [18, 19],
       [20, 21],
       [22, 23]]

B的維度:(12, 2)

可以看到,原來的(4,3,2)維的數組被展開成了(12,2)維的數組,而且最後一維的相對位置不變。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章