python細小知識點(不定期更新)
阿新 • • 發佈:2018-12-15
目錄:
1.np.range()函式
#一個引數 預設起點0,步長為1 輸出:[0 1 2] a = np.arange(3) #兩個引數 預設步長為1 輸出[3 4 5 6 7 8] a = np.arange(3,9) #三個引數 起點為0,終點為4,步長為0.1 輸出[ 0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2. 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9] a = np.arange(0, 3, 0.1)
2.np.transpose()函式
(1)對於一維陣列:
>>> import numpy as np
>>> t=np.arange(4)
>>> t
array([0, 1, 2, 3])
>>> t.transpose()
array([0, 1, 2, 3])
>>>
可見對一維陣列沒有任何改變
(2)對於二維陣列:
>>> arr=np.arange(16).reshape(4,4) >>> arr array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) >>> arr.transpose() array([[ 0, 4, 8, 12], [ 1, 5, 9, 13], [ 2, 6, 10, 14], [ 3, 7, 11, 15]]) >>> arr.transpose(1,0) array([[ 0, 4, 8, 12], [ 1, 5, 9, 13], [ 2, 6, 10, 14], [ 3, 7, 11, 15]])
此時transepose()han函式相當於轉置.T
(3)對於三維陣列:
>>> arry=np.arange(24).reshape(2,3,4) >>> arry array([[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]]) >>> arry.transpose() array([[[ 0 12] [ 4 16] [ 8 20]] [[ 1 13] [ 5 17] [ 9 21]] [[ 2 14] [ 6 18] [10 22]] [[ 3 15] [ 7 19] [11 23]]])
可以看出來原來陣列的大小為2×3×4,三軸的預設排序為(0,1,2),經過transpose後陣列的大小為4×3×2,三軸的順序變成了(2,1,0),也就是三維陣列的情況下,transpose函式預設交換第一維度和第三維度。
此外transpose函式還可以任意變換三軸的順序,例如
transpose(1,0,2),就是交換第二維度和第一維度。
3.np.meshgrid()函式
In [65]: xnums =np.arange(4)
In [66]: ynums =np.arange(5)
In [67]: xnums
Out[67]: array([0,1, 2, 3])
In [68]: ynums
Out[68]: array([0,1, 2, 3, 4])
In [69]: x, y= np.meshgrid(xnums,ynums)
In [74]: x
Out[74]:
array([[0, 1, 2,3],
[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3]])
In [75]: y
Out[75]:
array([[0, 0, 0,0],
[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3],
[4, 4, 4, 4]])
In [72]: x.shape
Out[72]: (5, 4)
In [73]: y.shape
Out[73]: (5, 4)
由上面的互動可以看出,meshgrid的作用是根據傳入的兩個一維陣列引數生成兩個陣列元素的列表。如果第一個引數是xarray,維度是xdimesion,第二個引數是yarray,維度是ydimesion。那麼生成的第一個二維陣列是以xarray為行,ydimesion行的向量;而第二個二維陣列是以yarray的轉置為列,xdimesion列的向量。