>> ..."/>
您好,登錄后才能下訂單哦!
本篇文章為大家展示了numpy中shape的租用是什么,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
一維情況:
<span >>>> import numpy as np >>> a = np.array([2,3,33]) >>> a array([ 2 3 33 ]) >>> print a [ 2 3 33 ] >>> a.shape (3, )</span>
一維情況中array創(chuàng)建的可以看做list(或一維數(shù)組),創(chuàng)建時(shí)用()和[ ]都可以,多維也一樣,兩種方法創(chuàng)建后的輸出顯示結(jié)果也相同,這里使用[ ]進(jìn)行創(chuàng)建
輸出a的shape會(huì)顯示一個(gè)參數(shù),就是這個(gè)list中元素個(gè)數(shù)
創(chuàng)建時(shí)也可以直接使用np.zeros([1]),這樣會(huì)創(chuàng)建全0的list,或者np.ones([1]),不需要我們輸入數(shù)據(jù),見(jiàn)下圖:
<span >>>> a = np.zeros([1]) >>> b = np.ones([1]) >>> print a [ 0. ] >>> print b [ 1. ]</span>
二維情況:
<span >>>> a = np.array([[2,2,2],[3,3,3]]) >>> print a [[ 2 2 2 ] [ 3 3 3 ]] >>> a.shape (2, 3)</span>
二維情況中array創(chuàng)建的可以看做二維數(shù)組(矩陣),注意創(chuàng)建時(shí)需要使用2個(gè)[ ],輸出a的shape顯示的(2,3)相當(dāng)于有2行,每行3個(gè)數(shù),使用np.ones創(chuàng)建結(jié)果如下:
<span >>>> a = np.ones([2, 3]) >>> print a [[ 1. 1. 1. ] [ 1. 1. 1. ]]</span>
多維情況:
多維情況統(tǒng)一使用np.ones進(jìn)行創(chuàng)建,先看三維情況:
<span >>>> a = np.ones([1,1,1]) >>> print a [[[ 1.]]] >>> a = np.ones([1,1,2]) >>> print a [[[ 1. 1.]]] >>> a = np.ones([1,2,1]) >>> print a [[[ 1.] [ 1.]]] >>> a = np.ones([2,1,1]) >>> print a [[[ 1.]] [[ 1.]]]</span>
從上面的代碼可以看出,三維情況創(chuàng)建時(shí)后面2個(gè)參數(shù)可以看做是創(chuàng)建二維數(shù)組,第1個(gè)參數(shù)看做創(chuàng)建的二維數(shù)組的個(gè)數(shù),所以創(chuàng)建時(shí)輸入的參數(shù)為2,3,2時(shí),就相當(dāng)于創(chuàng)建了2個(gè)3行2列的二維數(shù)組,如下:
<span >>>> a = np.ones([2,3,2]) >>> print a [[[ 1. 1.] [ 1. 1.] [ 1. 1.]] [[ 1. 1.] [ 1. 1.] [ 1. 1.]]]</span>
然后看四維情況:
<span >>>> a = np.ones([1,1,1,1]) >>> print a [[[[ 1.]]]] >>> a = np.ones([1,1,1,2]) >>> print a [[[[ 1. 1.]]]] >>> a = np.ones([1,1,2,1]) >>> print a [[[[ 1.] [ 1.]]]] >>> a = np.ones([1,2,1,1]) >>> print a [[[[ 1.]] [[ 1.]]]] >>> a = np.ones([2,1,1,1]) >>> print a [[[[ 1.]]] [[[ 1.]]]]</span>
從上面代碼可以看出:四維時(shí)將第一個(gè)參數(shù)設(shè)置為2和第二個(gè)參數(shù)設(shè)置為2時(shí),輸出結(jié)果中間的空行數(shù)量不同,我把它理解成先創(chuàng)建1行1列的二維數(shù)組[[ 1. ]],然后按照第2個(gè)參數(shù)打包這樣的二維數(shù)組,如果第二個(gè)參數(shù)是2,則打包2個(gè)2維數(shù)組變成[[[ 1. ]],[[ 1. ]]](小包),然后按照第1個(gè)參數(shù)再打包這樣的包,如果第一個(gè)參數(shù)是2,則變成[[[[ 1. ]], [[ 1. ]]], [[[ 1. ]], [[ 1. ]]]](大包),就是下面的結(jié)果:
<span >>>> a = np.ones([2,2,1,1]) >>> print a [[[[ 1.]] [[ 1.]]] [[[ 1.]] [[ 1.]]]]</span>
四維以上的結(jié)果也是這么理解~輸出中區(qū)分參數(shù)用空行~
然后來(lái)看一下特定輸出:
>>> import numpy as np >>> m = np.ones([2,3,2,3]) >>> print m [[[[ 1. 1. 1.] [ 1. 1. 1.]] [[ 1. 1. 1.] [ 1. 1. 1.]] [[ 1. 1. 1.] [ 1. 1. 1.]]] [[[ 1. 1. 1.] [ 1. 1. 1.]] [[ 1. 1. 1.] [ 1. 1. 1.]] [[ 1. 1. 1.] [ 1. 1. 1.]]]] >>> print m[1,:,:,:] [[[ 1. 1. 1.] [ 1. 1. 1.]] [[ 1. 1. 1.] [ 1. 1. 1.]] [[ 1. 1. 1.] [ 1. 1. 1.]]] >>> print m[:,1,:,:] [[[ 1. 1. 1.] [ 1. 1. 1.]] [[ 1. 1. 1.] [ 1. 1. 1.]]] >>> print m[:,:,1,:] [[[ 1. 1. 1.] [ 1. 1. 1.] [ 1. 1. 1.]] [[ 1. 1. 1.] [ 1. 1. 1.] [ 1. 1. 1.]]] >>> print m[:,:,:,1] [[[ 1. 1.] [ 1. 1.] [ 1. 1.]] [[ 1. 1.] [ 1. 1.] [ 1. 1.]]]
前面print m很好理解~
然后print m[1,:,:,:],:代表默認(rèn)值(就是一開(kāi)始你輸入時(shí)指定的值),這句代碼相當(dāng)于輸出2個(gè)包中的第1個(gè)包(從0開(kāi)始計(jì)數(shù)),這個(gè)包里面有3個(gè)小包,小包里面是2*3的二維數(shù)組,所以結(jié)果就是上面的~
然后print m[:,1,:,:],相當(dāng)于輸出2個(gè)大包,每個(gè)大包輸出第1個(gè)小包,小包里面是2*3的二維數(shù)組
然后print m[:,:,1,:],相當(dāng)于輸出2個(gè)大包,每個(gè)大包輸出3個(gè)小包,小包里面是二維數(shù)組的第1行
然后print m[:,:,:,1],相當(dāng)于輸出2個(gè)大包,每個(gè)大包輸出3個(gè)小包,小包里面是1*2的二維數(shù)組
其他結(jié)果可以自己去試試~
總結(jié):采用np.array()創(chuàng)建時(shí)需要幾個(gè)維度就要用幾個(gè)[ ]括起來(lái),這種創(chuàng)建方式要給定數(shù)據(jù);采用np.ones()或np.zeros()創(chuàng)建分別產(chǎn)生全1或全0的數(shù)據(jù),用a.shape會(huì)輸出你創(chuàng)建時(shí)的輸入,創(chuàng)建時(shí)輸入了幾個(gè)維度輸出就會(huì)用幾個(gè)[ ]括起來(lái),shape的返回值是一個(gè)元組,里面每個(gè)數(shù)字表示每一維的長(zhǎng)度
上述內(nèi)容就是numpy中shape的租用是什么,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(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)容。