numpy中shape (1,X) 和 (X,)的區別 參考
首先放結論:shape(x,)是一維數組,ndim=1,[1,2,3,…x] ;shape(1,x)是二維?數組,ndim=2,[[1,2,3,…n]]
由于array.shape 表示數組的維度,返回一個元組,這個元組的長度就是維度的數目,即 ndim
屬性(秩)。一個二維數組,其維度表示"行數"和"列數"。
說人話,
nidm屬性 秩=維度/數=軸的數量,一維數組ndim=1,二維數組ndim=2
shape屬性返回一個元組,元組的長度=ndim,二維數組的shape=(行數,列數),一維數組shape=(列數,)PS:因為一維數組ndim=1嘛,所以會這樣表示!
array.size屬性,數組元素的總個數,相當于 .shape 中 n*m 的值
axis=0,表示沿著第 0 軸進行操作,即對每一列進行操作
axis=1,表示沿著第1軸進行操作,即對每一行進行操作。
(先理解這么多,其他的真的理解不了 。。。。11.22)
np.random()
np.random.rand(3,2) #隨機生成【3,2】大小的矩陣
np.random.rand(3,2) #隨機生成【3,2】大小的矩陣
array([[0.98766853, 0.09140474],[0.85365579, 0.71327129],[0.22873142, 0.05369397]])
np.random.randint(10,size=5) #隨機生成(0-10)的int整形,大小=5
>>> np.random.randint(10,size=5) #隨機生成[0-10)的int整形,大小=5
array([3, 2, 2, 9, 7])
np.random.randint(0,5,(2,2))#隨機生成[0,5)的int整形,大小(2*2矩陣)
>>> b=np.random.randint(0,5,(2,2))
>>> b
array([[4, 0],[3, 3]])
np.arange() 借鑒
- 一個參數時,參數值為終點,起點取默認值0,步長取默認值1
>>> np.arange(5)
array([0, 1, 2, 3, 4])
- 兩個參數時,第一個參數為起點,第二個參數為終點,步長取默認值1。包前不包后
>>> np.arange(5,10)
array([5, 6, 7, 8, 9])
- 三個參數時,第一個參數為起點,第二個參數為終點,第三個參數為步長;步長支持小數。
>>> np.arange(5,10,2)
array([5, 7, 9])
參考
稍微一看,shape為(x,)和shape為(x,1)幾乎一樣,都是一維的形式。其實不然:
(x,)意思是一維數組,數組中有x個元素
(x,1)意思是一個x維數組,每行有1個元素
reshape() 參考
numpy中reshape函數的三種常見相關用法
1、numpy.arange(n).reshape(a, b) 依次生成n個自然數,并且以a行b列的數組形式顯示
np.arange(16).reshape(2,8) #生成16個自然數,以2行8列的形式顯示
# Out:
# array([[ 0, 1, 2, 3, 4, 5, 6, 7],
# [ 8, 9, 10, 11, 12, 13, 14, 15]])
2、mat (or array).reshape(c, -1) 必須是矩陣格式或者數組格式,才能使用 .reshape(c, -1) 函數, 表示將此矩陣或者數組重組,以 c行d列的形式表示
arr.shape # (a,b)
arr.reshape(m,-1) #改變維度為m行、d列 (-1表示列數自動計算,d= a*b /m )
arr.reshape(-1,m) #改變維度為d行、m列 (-1表示行數自動計算,d= a*b /m )
-1的作用: 自動計算d:d=數組或者矩陣里面所有的元素個數/c, d必須是整數,不然報錯)
(reshape(-1, m)即列數固定,行數需要計算)
3、
- numpy.arange(a,b,c) 從 數字a起, 步長為c, 到b結束,生成array 【a,b)
- numpy.arange(a,b,c).reshape(m,n) :將array的維度變為m 行 n列。
>>> np.arange(1,11,2)
array([1, 3, 5, 7, 9])
>>> np.arange(1,12,2).reshape(2,-1)
array([[ 1, 3, 5],[ 7, 9, 11]])
參考:
array([[1, 2, 3],[4, 5, 6]])
>>> c=c.reshape(3,2)
>>> c
array([[1, 2],[3, 4],[5, 6]])
>>> c=c.reshape(-1,6)
>>> c
array([[1, 2, 3, 4, 5, 6]])
>>> c=c.reshape(6,-1)
>>> c
array([[1],[2],[3],[4],[5],[6]])