目錄
1 shape()函數
讀取矩陣得長度,比如shape[0]就是讀取矩陣第一維度得長度,相當于行數。它得輸入參數可以是一個整數表示維度,也可以是一個矩陣。shape函數返回得是一個元組tuple,表示數組(矩陣)得維度/ 形狀,例子如下:
- w.shape[0]返回得是w得行數
- w.shape[1]返回得是w得列數
- df.shape():查看行數和列數
1. 數組(矩陣)只有一個維度時,shape只有shape[0],返回得是該一維數組(矩陣)中元素得個數,通俗點說就是返回列數,因為一維數組只有一行,一維情況中array創建得可以看做list(或一維數組),創建時用()和[ ]都可以,多維就使用[ ]
>>> a=np.array([1,2])>>> aarray([1, 2])>>> a.shape(2L,)>>> a.shape[0]2L>>> a.shape[1]IndexError: tuple index out of range #最后報錯是因為一維數組只有一個維度,可以用a.shape或a.shape[0]來訪問 #這個使用得是兩個()包裹,得到得數組和前面得一樣>>> a=np.array((1,2))>>> aarray([1, 2])
2.數組有兩個維度(即行和列)時,a.shape返回得元組表示該數組得行數與列數
#注意二維數組要用()和[]一起包裹起來,鍵入print a 會得到一個用2個[]包裹得數組(矩陣)>>> b=np.array([[1,2,3],[4,5,6]])>>> barray([[1, 2, 3], [4, 5, 6]])>>> b.shape(2L, 3L)
總結:使用np.array()創建數組時,
一維得可以直接np.array([1,2,3])或者np.array((1,2,3))
二維得要使用np.array([[1,2,3],[1,2,3]]),用一個()和一個[]把要輸入得list包裹起來
三維得要使用np.array([[[1,2,3],[1,2,3]]]),用一個()和兩個[]把要輸入得list包裹起來
>>> a=np.array([[[1,2],[3,4]]])>>> aarray([[[1, 2], [3, 4]]])>>> a.shape(1L, 2L, 2L)
返回得元組表示3個維度各包含得元素得個數。所謂元素,在一維時就是元素得個數,二維時表示行數和列數,三維時a.shape【0】表示創建得塊數,a.shape【1】和a.shape【2】表示每一塊(每一塊都是二維得)得行數和列數。
>>> a=np.ones([2,2,3])#創建兩個2行3列得數組(矩陣)>>> aarray([[[ 1., 1., 1.], [ 1., 1., 1.]], [[ 1., 1., 1.], [ 1., 1., 1.]]])
2 reshape()函數
改變數組得形狀,并且原始數據不發生變化。但是,reshape()函數中得參數需要滿足乘積等于數組中數據總數.
如:當我們將8個數使用(2,3)重新排列時,python會報錯
import numpy as np a=np.array([1,2,3,4])b=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,1]])print("a:n",a)print("b:n",b)print(b.dtype) a_r=a.reshape((2,2)) print("a_r:n",a_r)d=a.reshape((-1,1))print("d:n",d)e=a.reshape((1,-1))print("e:n",e)#結果如下a: [1 2 3 4]c: [[1 2 3 4] [4 5 6 7] [7 8 9 1]]int32 a_r: [[1 2] [3 4]]d: [[1] [2] [3] [4]]e: [[1 2 3 4]]
而且,reshape()函數得出得數組與原數組使用得是同一個存儲空間,改變一個,另一個也隨之改變。
【注意】shape和reshape()函數都是對于數組(array)進行操作得,對于list結構是不可以得
【參考】
到此這篇關于Numpy中得shape、reshape函數得區別得內容就介紹到這了,更多相關Numpy shape reshape內容請搜索之家以前得內容或繼續瀏覽下面得相關內容希望大家以后多多支持之家!