環境:windows, python2.7
>>> import numpy as np
>>> a = np.array([2,3,33])
>>> a
array([ 2 3 33 ])
>>> print a
[ 2 3 33 ]
>>> a.shape
(3, )
一維情況中array建立的可以看做list(或一維陣列),建立時用()和[ ]都可以,多維也一樣,兩種方法建立後的輸出顯示結果也相同,這裡使用[ ]進行建立
輸出a的shape會顯示乙個引數,就是這個list中元素個數
建立時也可以直接使用np.zeros([1]),這樣會建立全0的list,或者np.ones([1]),不需要我們輸入資料,見下圖:
>>> a = np.zeros([1])
>>> b = np.ones([1])
>>> print a
[ 0. ]
>>> print b
[ 1. ]
>>> a = np.array([[2,2,2],[3,3,3]])
>>> print a
[[ 2 2 2 ]
[ 3 3 3 ]]
>>> a.shape
(2, 3)
二維情況中array建立的可以看做二維陣列(矩陣),注意建立時需要使用2個[ ],輸出a的shape顯示的(2,3)相當於有2行,每行3個數,使用np.ones建立結果如下:
>>> a = np.ones([2, 3])
>>> print a
[[ 1. 1. 1. ]
[ 1. 1. 1. ]]
多維情況統一使用np.ones進行建立,先看三維情況:
>>> 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.]]]
從上面的**可以看出,三維情況建立時後面2個引數可以看做是建立二維陣列,第1個引數看做建立的二維陣列的個數,所以建立時輸入的引數為2,3,2時,就相當於建立了2個3行2列的二維陣列,如下:
>>> a = np.ones([2,3,2])
>>> print a
[[[ 1. 1.]
[ 1. 1.]
[ 1. 1.]]
[[ 1. 1.]
[ 1. 1.]
[ 1. 1.]]]
然後看四維情況:
>>> 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.]]]]
從上面**可以看出:四維時將第乙個引數設定為2和第二個引數設定為2時,輸出結果中間的空行數量不同,我把它理解成先建立1行1列的二維陣列[[ 1. ]],然後按照第2個引數打包這樣的二維陣列,如果第二個引數是2,則打包2個2維陣列變成[[[ 1. ]],[[ 1. ]]](小包),然後按照第1個引數再打包這樣的包,如果第乙個引數是2,則變成[[[[ 1. ]], [[ 1. ]]], [[[ 1. ]], [[ 1. ]]]](大包),就是下面的結果:
>>> a = np.ones([2,2,1,1])
>>> print a
[[[[ 1.]]
[[ 1.]]]
[[[ 1.]]
[[ 1.]]]]
四維以上的結果也是這麼理解~輸出中區分引數用空行~
然後來看一下特定輸出:
>>> 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,:,:,:],:代表預設值(就是一開始你輸入時指定的值),這句**相當於輸出2個包中的第1個包(從0開始計數),這個包裡面有3個小包,小包裡面是2*3的二維陣列,所以結果就是上面的~
然後print m[:,1,:,:],相當於輸出2個大包,每個大包輸出第1個小包,小包裡面是2*3的二維陣列
然後print m[:,:,1,:],相當於輸出2個大包,每個大包輸出3個小包,小包裡面是二維陣列的第1行
然後print m[:,:,:,1],相當於輸出2個大包,每個大包輸出3個小包,小包裡面是1*2的一維陣列
其他結果可以自己去試試~
總結:採用np.array()建立時需要幾個維度就要用幾個[ ]括起來,這種建立方式要給定資料;採用np.ones()或np.zeros()建立分別產生全1或全0的資料,用a.shape會輸出你建立時的輸入,建立時輸入了幾個維度輸出就會用幾個[ ]括起來,shape的返回值是乙個元組,裡面每個數字表示每一維的長度
對numpy中shape的理解
from 環境 windows,python3.5 import numpy as np a np.array 2,3,33 a array 2 3 33 print a 2 3 33 a.shape 3,a.shape 0 3 a.shape 1 traceback most recent cal...
numpy中shape和reshape的用法
1 shape 在python中匯入numpy庫之後,我們可以通過矩陣的屬性shape獲取矩陣的維度。如圖所示 import numpy as np b np.array 1,2,3,4 5,6,7,8 print b print b.shape 輸出行數和列數 print b.shape 0 輸出...
Python的numpy庫中的shape用法
shape函式是numpy.core.fromnumeric中的函式,它的功能是讀取矩陣的維度。例 shape matrixa 返回matrixa的 行數,列數 元組 shape matrixa 0 行數 shape matrixa 1 列數 shape的輸入引數可以使乙個實數,乙個一維列表 陣列 ...