最近進行機器學習實戰過程中,遇到了reshape函數的新用法,簡單總結一下:
Numpy中reshape函數的三種常見相關用法
reshape(1,-1)轉化成1行,列需要計算:
reshape(2,-1)轉換成兩行,列需要計算:
reshape(-1,1)轉換成1列,行需要計算:
reshape(-1,2)轉化成兩列,行需要計算。
我們接下來通過例子來說明一下:
In [2]: import numpy as np
In [3]: x=np.array([[[1,2,3],[4,5,6],[7,8,9]]])
In [4]: x
Out[4]:
array([[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]])
In [5]: x.shape
Out[5]: (1, 3, 3)
我們定義一個三維數組,共計九個元素:
首先第一個reshape(1,-1)
:
In [6]: x.reshape((1,-1))
Out[6]: array([[1, 2, 3, 4, 5, 6, 7, 8, 9]])
我們不難理解,我們目的是把三維數組轉換成二維數組,且行數為1,那麼列數為:9/1=9
所以是一個1*9
的數組。
同樣的道理,我們看一下另外三個:
In [7]: x.reshape((3,-1))
Out[7]:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
In [8]: x.reshape((-1,1))
Out[8]:
array([[1],
[2],
[3],
[4],
[5],
[6],
[7],
[8],
[9]])
In [9]: x.reshape((-1,3))
Out[9]:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
我們用(3,-1)和(-1,3)的原因很簡單,因為2不能整除9.