NumPy基礎入門(4)數學基礎函數

學習彙總:點這裏

1.簡單數組操作

>>> import numpy as np
>>> a = np.array([[1.0, 2.0], [3.0, 4.0]])
>>> print(a)
[[ 1.  2.]
 [ 3.  4.]]

>>> a.transpose()  # 輸出轉置矩陣
array([[ 1.,  3.],
       [ 2.,  4.]])

>>> np.linalg.inv(a)  # 輸出逆矩陣
array([[-2. ,  1. ],
       [ 1.5, -0.5]])

>>> u = np.eye(2) # 構造單位矩陣
>>> u
array([[ 1.,  0.],
       [ 0.,  1.]])
>>> j = np.array([[0.0, -1.0], [1.0, 0.0]])

>>> j @ j        # 矩陣積
array([[-1.,  0.],
       [ 0., -1.]])

>>> np.trace(u)  # 對角線上的元素和
2.0

>>> y = np.array([[5.], [7.]])
>>> np.linalg.solve(a, y)  # 矩陣積
array([[-3.],
       [ 4.]])

>>> np.linalg.eig(j)  # 計算矩陣特徵向量
(array([ 0.+1.j,  0.-1.j]), array([[ 0.70710678+0.j        ,  0.70710678-0.j        ],
       [ 0.00000000-0.70710678j,  0.00000000+0.70710678j]]))

要更改數組的尺寸,您可以忽略其中一個尺寸,然後將自動推斷尺寸

>>> a = np.arange(30)
>>> a.shape = 2,-1,3  # -1 means "whatever is needed"
>>> a.shape
(2, 5, 3)
>>> a
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],
        [24, 25, 26],
        [27, 28, 29]]])

我們如何從大小相等的行向量列表中構建2D數組?在MATLAB中,這非常容易:如果x和y是兩個相同長度的向量,則只需要do m=[x;y]。在此NumPy的通過功能的工作原理column_stack,dstack,hstack和vstack,視維在堆疊是必須要做的。

>>> x = np.arange(0,10,2)
>>> y = np.arange(5)
>>> m = np.vstack([x,y])
>>> m
array([[0, 2, 4, 6, 8],
       [0, 1, 2, 3, 4]])
>>> xy = np.hstack([x,y])
>>> xy
array([0, 2, 4, 6, 8, 0, 1, 2, 3, 4])

2.三角函數

sin(x,/ [,out,where,cast,order,…])三角正弦,元素方式。

cos(x,/ [,out,where,cast,order,…])餘弦元素。

tan(x,/ [,out,where,cast,order,…])按元素計算切線。

arcsin(x,/ [,out,where,cast,order,…])按元素反正弦。

arccos(x,/ [,out,where,cast,order,…])三角反餘弦,元素方式。

arctan(x,/ [,out,where,cast,order,…])三角逆切線,元素方向。

hypot(x1,x2,/ [,out,where,cast,…])給定直角三角形的兩邊,返回其斜邊。

arctan2(x1,x2,/ [,out,where,cast,…])x1/x2正確選擇象限的逐元素反正切。

degrees(x,/ [,out,where,cast,order,…])將角度從弧度轉換爲度。

radians(x,/ [,out,where,cast,order,…])將角度從度轉換爲弧度。

unwrap(p [,不連續,軸])通過將值之間的增量更改爲2 * pi補碼來展開。

deg2rad(x,/ [,out,where,cast,order,…])將角度從度轉換爲弧度。

rad2deg(x,/ [,out,where,cast,order,…])將角度從弧度轉換爲度。

3.舍入函數

numpy.around()這個函數返回四捨五入到所需精度的值。 該函數接受以下參數。

numpy.around(a,decimals)

序號 參數及描述
1 a 輸入數組
2 decimals 要舍入的小數位數。 默認值爲0。 如果爲負,整數將四捨五入到小數點左側的位置
>>>import numpy as np
>>>a = np.array([1.0,5.55,  123,  0.567,  25.532])  
>>>a
array([   1.   ,    5.55 ,  123.   ,    0.567,   25.532])

>>>np.around(a)  
array([   1.,    6.,  123.,    1.,   26.])

>>> np.around(a, decimals =  1)  
array([   1. ,    5.6,  123. ,    0.6,   25.5])

>>>np.around(a, decimals =  -1)
array([   0.,   10.,  120.,    0.,   30.])

numpy.floor()此函數返回不大於輸入參數的最大整數。
即標量x 的下限是最大的整數i ,使得i <= x。 注意在Python中,向下取整總是從 0 舍入。

>>>import numpy as np
>>>a = np.array([-1.7,  1.5,  -0.2,  0.6,  10])  
>>>a
array([ -1.7,   1.5,  -0.2,   0.6,  10. ])

>>>np.floor(a)
array([ -2.,   1.,  -1.,   0.,  10.])

numpy.ceil()函數返回輸入值的上限,即,標量x的上限是最小的整數i ,使得i> = x。

>>>np.ceil(a)
array([ -1.,   2.,  -0.,   1.,  10.])

4.算數運算

用於執行算術運算(如add(),subtract(),multiply()和divide())的輸入數組必須具有相同的形狀或符合數組廣播規則。

>>>import numpy as np 
>>>a = np.arange(9, dtype = np.float_).reshape(3,3)  
>>>a 
array([[ 0.,  1.,  2.],
       [ 3.,  4.,  5.],
       [ 6.,  7.,  8.]])

>>>b = np.array([10,10,10])  
>>>b 
array([10, 10, 10])

>>>np.add(a,b)  
array([[ 10.,  11.,  12.],
       [ 13.,  14.,  15.],
       [ 16.,  17.,  18.]])

>>>np.subtract(a,b)  
array([[-10.,  -9.,  -8.],
       [ -7.,  -6.,  -5.],
       [ -4.,  -3.,  -2.]])
 
>>>np.multiply(a,b)  
array([[  0.,  10.,  20.],
       [ 30.,  40.,  50.],
       [ 60.,  70.,  80.]])

>>>np.divide(a,b)
array([[ 0. ,  0.1,  0.2],
       [ 0.3,  0.4,  0.5],
       [ 0.6,  0.7,  0.8]])

注意:除法需要特別注意。

numpy.reciprocal()此函數返回參數逐元素的倒數,。 由於 Python 處理整數除法的方式,對於絕對值大於 1 的整數元素,結果始終爲 0, 對於整數 0,則發出溢出警告。

>>>import numpy as np 
>>>a = np.array([0.25,  1.33,  1,  0,  100])  
>>>a 
array([   0.25,    1.33,    1.  ,    0.  ,  100.  ])

>>>np.reciprocal(a)  
D:/PyCharm Community Edition 2019.2.5/hello.py:4: RuntimeWarning: divide by zero encountered in reciprocal
array([ 4. ,  0.7518797,  1.  ,inf,  0.01])

>>>b = np.array([100], dtype =  int)  
>>>b 
array([100])

>>>np.reciprocal(b)
array([0])

numpy.power()此函數將第一個輸入數組中的元素作爲底數,計算它與第二個輸入數組中相應元素的冪。

>>>import numpy as np 
>>>a = np.array([10,100,1000])  
>>>a 
array([10,100,1000])

>>>np.power(a,2)  
array([100, 10000, 1000000])

>>>b = np.array([1,2,3])  
>>>b 
array([1, 2, 3])

>>>np.power(a,b)
array([10, 10000, 1000000000])

numpy.mod()此函數返回輸入數組中相應元素的除法餘數。 函數numpy.remainder()也產生相同的結果。

>>>import numpy as np 
>>>a = np.array([10,20,30]) 
>>>b = np.array([3,5,7])  
>>>a 
array([10, 20, 30])

>>>b 
array([3, 5, 7])

>>>np.mod(a,b)  
array([1, 0, 2])

>>>np.remainder(a,b)
array([1, 0, 2])

以下函數用於對含有複數的數組執行操作。

  1. numpy.real() 返回複數類型參數的實部。
  2. numpy.imag() 返回複數類型參數的虛部。
  3. numpy.conj() 返回通過改變虛部的符號而獲得的共軛複數。
  4. numpy.angle() 返回複數參數的角度。 函數的參數是degree。 如果爲true,返回的角度以角度制來表示,否則爲以弧度制來表示。
>>>import numpy as np 
>>>a = np.array([-5.6j,  0.2j,  11.  ,  1+1j])  
>>>a 
array([  0.-5.6j,   0.+0.2j,  11.+0.j ,   1.+1.j ])

>>>np.real(a)  
array([  0.,   0.,  11.,   1.])

>>>np.imag(a)  
array([-5.6,  0.2,  0. ,  1. ])

>>>np.conj(a)  
array([  0.+5.6j,   0.-0.2j,  11.-0.j ,   1.-1.j ])

>>>np.angle(a)  
array([-1.57079633,  1.57079633,  0.        ,  0.78539816])

>>> np.angle(a, deg =  True)
array([-90.,  90.,   0.,  45.])

函數補充

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章