以前寫過一篇: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)維的數組,而且最後一維的相對位置不變。