對numpy中shape的深入理解
環(huán)境:Windows, Python2.7
一維情況:
<span style="font-size:14px;">>>> 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)建時用()和[ ]都可以,多維也一樣,兩種方法創(chuàng)建后的輸出顯示結(jié)果也相同,這里使用[ ]進(jìn)行創(chuàng)建
輸出a的shape會顯示一個參數(shù),就是這個list中元素個數(shù)
創(chuàng)建時也可以直接使用np.zeros([1]),這樣會創(chuàng)建全0的list,或者np.ones([1]),不需要我們輸入數(shù)據(jù),見下圖:
<span style="font-size:14px;">>>> a = np.zeros([1]) >>> b = np.ones([1]) >>> print a [ 0. ] >>> print b [ 1. ]</span>
二維情況:
<span style="font-size:14px;">>>> 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)建時需要使用2個[ ],輸出a的shape顯示的(2,3)相當(dāng)于有2行,每行3個數(shù),使用np.ones創(chuàng)建結(jié)果如下:
<span style="font-size:14px;">>>> a = np.ones([2, 3]) >>> print a [[ 1. 1. 1. ] [ 1. 1. 1. ]]</span>
多維情況:
多維情況統(tǒng)一使用np.ones進(jìn)行創(chuàng)建,先看三維情況:
<span style="font-size:14px;">>>> 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)建時后面2個參數(shù)可以看做是創(chuàng)建二維數(shù)組,第1個參數(shù)看做創(chuàng)建的二維數(shù)組的個數(shù),所以創(chuàng)建時輸入的參數(shù)為2,3,2時,就相當(dāng)于創(chuàng)建了2個3行2列的二維數(shù)組,如下:
<span style="font-size:14px;">>>> a = np.ones([2,3,2]) >>> print a [[[ 1. 1.] [ 1. 1.] [ 1. 1.]] [[ 1. 1.] [ 1. 1.] [ 1. 1.]]]</span>
然后看四維情況:
<span style="font-size:14px;">>>> 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ù)設(shè)置為2和第二個參數(shù)設(shè)置為2時,輸出結(jié)果中間的空行數(shù)量不同,我把它理解成先創(chuàng)建1行1列的二維數(shù)組[[ 1. ]],然后按照第2個參數(shù)打包這樣的二維數(shù)組,如果第二個參數(shù)是2,則打包2個2維數(shù)組變成[[[ 1. ]],[[ 1. ]]](小包),然后按照第1個參數(shù)再打包這樣的包,如果第一個參數(shù)是2,則變成[[[[ 1. ]], [[ 1. ]]], [[[ 1. ]], [[ 1. ]]]](大包),就是下面的結(jié)果:
<span style="font-size:14px;">>>> a = np.ones([2,2,1,1]) >>> print a [[[[ 1.]] [[ 1.]]] [[[ 1.]] [[ 1.]]]]</span>
四維以上的結(jié)果也是這么理解~輸出中區(qū)分參數(shù)用空行~
然后來看一下特定輸出:
>>> 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)值(就是一開始你輸入時指定的值),這句代碼相當(dāng)于輸出2個包中的第1個包(從0開始計數(shù)),這個包里面有3個小包,小包里面是2*3的二維數(shù)組,所以結(jié)果就是上面的~
然后print m[:,1,:,:],相當(dāng)于輸出2個大包,每個大包輸出第1個小包,小包里面是2*3的二維數(shù)組
然后print m[:,:,1,:],相當(dāng)于輸出2個大包,每個大包輸出3個小包,小包里面是二維數(shù)組的第1行
然后print m[:,:,:,1],相當(dāng)于輸出2個大包,每個大包輸出3個小包,小包里面是1*2的二維數(shù)組
其他結(jié)果可以自己去試試~
總結(jié):采用np.array()創(chuàng)建時需要幾個維度就要用幾個[ ]括起來,這種創(chuàng)建方式要給定數(shù)據(jù);采用np.ones()或np.zeros()創(chuàng)建分別產(chǎn)生全1或全0的數(shù)據(jù),用a.shape會輸出你創(chuàng)建時的輸入,創(chuàng)建時輸入了幾個維度輸出就會用幾個[ ]括起來,shape的返回值是一個元組,里面每個數(shù)字表示每一維的長度
以上這篇對numpy中shape的深入理解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python把數(shù)據(jù)導(dǎo)出生成excel文件的方法小結(jié)
在Python中,將數(shù)據(jù)導(dǎo)出生成Excel文件,最常用的庫之一是openpyxl(用于處理.xlsx文件)和pandas,以下將分別介紹如何使用這兩個庫來生成Excel文件,感興趣的小伙伴跟著小編一起來看看吧2024-09-09
python用BeautifulSoup庫簡單爬蟲實(shí)例分析
文章給大家分享了關(guān)于python爬蟲的相關(guān)實(shí)例以及相關(guān)代碼,有興趣的朋友們參考下。2018-07-07
Python+PyQt5實(shí)現(xiàn)自動點(diǎn)擊神器
這篇文章主要為大家詳細(xì)介紹了如何利用Python和PyQt5實(shí)現(xiàn)自動點(diǎn)擊神器,旨在解決重復(fù)性的點(diǎn)擊工作,解放雙手,具有及時性和準(zhǔn)確性,需要的可以參考下2024-01-01
如何利用python寫GUI及生成.exe可執(zhí)行文件
工作中需要開發(fā)一個小工具,簡單的UI界面可以很好的提高工具的實(shí)用性,由此開啟了我的第一次GUI開發(fā)之旅,這篇文章主要給大家介紹了關(guān)于如何利用python寫GUI及生成.exe可執(zhí)行文件的相關(guān)資料,需要的朋友可以參考下2021-12-12
Python字符串中出現(xiàn)的次數(shù)統(tǒng)計多種方法
這篇文章主要介紹了Python字符串中出現(xiàn)的次數(shù)統(tǒng)計多種方法,使用內(nèi)置的count()方法、正則表達(dá)式、列表推導(dǎo)式、循環(huán)和條件判斷以及字符串分割,每種方法都有其適用的場景和優(yōu)缺點(diǎn),選擇合適的方法取決于具體的需求和場景,需要的朋友可以參考下2024-12-12
Python操作MongoDB數(shù)據(jù)庫PyMongo庫使用方法
這篇文章主要介紹了Python操作MongoDB數(shù)據(jù)庫PyMongo庫使用方法,本文講解了創(chuàng)建連接、連接數(shù)據(jù)庫、連接聚集、查看全部聚集名稱、查看聚集的一條記錄等操作方法,需要的朋友可以參考下2015-04-04
Python測試WebService接口的實(shí)現(xiàn)示例
webService接口是走soap協(xié)議通過http傳輸,請求報文和返回報文都是xml格式的,本文主要介紹了Python測試WebService接口,具有一定的參考價值,感興趣的可以了解一下2024-03-03
解鎖Python中神器vars內(nèi)置函數(shù)的使用
vars()函數(shù)是一個內(nèi)置函數(shù),用于返回對象的__字典__,其中包含對象的__屬性__,本文主要為大家詳細(xì)介紹了vars()函數(shù)的具體使用,需要的小伙伴可以了解下2023-11-11

