1. 程式人生 > >python細小知識點(不定期更新)

python細小知識點(不定期更新)

目錄:

1.np.range()函式

2.np.transpose()函式

3.np.meshgrid()函式


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列的向量。