Numpy怎樣給數組增加一個維度
背景:
很多數據計算都是二維或三維的,對於一維的數據輸入為了形狀匹配,經常需升維變成二維
需要:
在不改變數據的情況下,添加數組維度;(注意觀察這個例子,維度變了,但數據不變)
原始數組:一維數組arr=[1,2,3,4],其shape是(4, ),取值分別為arr[0],arr[1],arr[2],arr[3]
變形數組:二維數組arr[[1,2,3,4]],其shape實(1,4), 取值分別為a[0,0],a[0,1],a[0,2],a[0,3]
實操:
經常需要在紙上手繪數組的形狀,來查看不同數組是否形狀匹配,是否需要升維降維
3種方法:
- np.newaxis:關鍵字,使用索引的語法給數組添加維度
- np.expand_dims(arr, axis):方法,和np.newaxis實現一樣的功能,給arr在axis位置添加維度
- np.reshape(a, newshape):方法,給一個維度設置為1完成升維
方法1:np.newaxis關鍵字
注意:np.newaxis其實就是None的別名
給一維向量添加一個行維度
np.newaxis就是添加一個維度
下面【6】中表示在行的位置添加維度,列方向從頭到尾索引
數據現在是一行*五列,數據本身沒有增減,只是多了一級括號
給一維向量添加一個列維度
下面【8】中表示在列的位置添加維度,行方向從頭到尾索引
方法2:np.expand_dims方法
np.expand_dims方法實現的效果,和np.newaxis關鍵字是一模一樣的
給一維數組添加一個行維度
相當於arr[np.newaxis, :]
axis為0表示行方向增加維度,為1表示列方向上增加維度
給一維數組添加一個列維度
相當於arr[:, np.newaxis]