您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“Numpy中shape、reshape函數(shù)的區(qū)別是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
讀取矩陣的長(zhǎng)度,比如shape[0]就是讀取矩陣第一維度的長(zhǎng)度,相當(dāng)于行數(shù)。它的輸入?yún)?shù)可以是一個(gè)整數(shù)表示維度,也可以是一個(gè)矩陣。shape函數(shù)返回的是一個(gè)元組tuple,表示數(shù)組(矩陣)的維度/ 形狀,例子如下:
w.shape[0]返回的是w的行數(shù)
w.shape[1]返回的是w的列數(shù)
df.shape():查看行數(shù)和列數(shù)
1. 數(shù)組(矩陣)只有一個(gè)維度時(shí),shape只有shape[0],返回的是該一維數(shù)組(矩陣)中元素的個(gè)數(shù),通俗點(diǎn)說就是返回列數(shù),因?yàn)橐痪S數(shù)組只有一行,一維情況中array創(chuàng)建的可以看做list(或一維數(shù)組),創(chuàng)建時(shí)用()和[ ]都可以,多維就使用[ ]
>>> a=np.array([1,2]) >>> a array([1, 2]) >>> a.shape (2L,) >>> a.shape[0] 2L >>> a.shape[1] IndexError: tuple index out of range #最后報(bào)錯(cuò)是因?yàn)橐痪S數(shù)組只有一個(gè)維度,可以用a.shape或a.shape[0]來(lái)訪問 #這個(gè)使用的是兩個(gè)()包裹,得到的數(shù)組和前面的一樣 >>> a=np.array((1,2)) >>> a array([1, 2])
2.數(shù)組有兩個(gè)維度(即行和列)時(shí),a.shape返回的元組表示該數(shù)組的行數(shù)與列數(shù)
#注意二維數(shù)組要用()和[]一起包裹起來(lái),鍵入print a 會(huì)得到一個(gè)用2個(gè)[]包裹的數(shù)組(矩陣) >>> b=np.array([[1,2,3],[4,5,6]]) >>> b array([[1, 2, 3], [4, 5, 6]]) >>> b.shape (2L, 3L)
總結(jié):使用np.array()創(chuàng)建數(shù)組時(shí),
一維的可以直接np.array([1,2,3])或者np.array((1,2,3))
二維的要使用np.array([[1,2,3],[1,2,3]]),用一個(gè)()和一個(gè)[]把要輸入的list包裹起來(lái)
三維的要使用np.array([[[1,2,3],[1,2,3]]]),用一個(gè)()和兩個(gè)[]把要輸入的list包裹起來(lái)
>>> a=np.array([[[1,2],[3,4]]]) >>> a array([[[1, 2], [3, 4]]]) >>> a.shape (1L, 2L, 2L)
返回的元組表示3個(gè)維度各包含的元素的個(gè)數(shù)。所謂元素,在一維時(shí)就是元素的個(gè)數(shù),二維時(shí)表示行數(shù)和列數(shù),三維時(shí)a.shape【0】表示創(chuàng)建的塊數(shù),a.shape【1】和a.shape【2】表示每一塊(每一塊都是二維的)的行數(shù)和列數(shù)。
>>> a=np.ones([2,2,3])#創(chuàng)建兩個(gè)2行3列的數(shù)組(矩陣) >>> a array([[[ 1., 1., 1.], [ 1., 1., 1.]], [[ 1., 1., 1.], [ 1., 1., 1.]]])
改變數(shù)組的形狀,并且原始數(shù)據(jù)不發(fā)生變化。但是,reshape()函數(shù)中的參數(shù)需要滿足乘積等于數(shù)組中數(shù)據(jù)總數(shù).
如:當(dāng)我們將8個(gè)數(shù)使用(2,3)重新排列時(shí),python會(huì)報(bào)錯(cuò)
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) #結(jié)果如下 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()函數(shù)得出的數(shù)組與原數(shù)組使用的是同一個(gè)存儲(chǔ)空間,改變一個(gè),另一個(gè)也隨之改變。
【注意】shape和reshape()函數(shù)都是對(duì)于數(shù)組(array)進(jìn)行操作的,對(duì)于list結(jié)構(gòu)是不可以的
“Numpy中shape、reshape函數(shù)的區(qū)別是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。