第 84 天:NumPy 數學函數

圖片


本文向你們介紹 NumPy 常見的數學函數。html

NumPy 三角函數

三角函數是基本初等函數之一,是以角度(數學上最經常使用弧度制,下同)爲自變量,角度對應任意角終邊與單位圓交點座標或其比值爲因變量的函數。三角函數通常用於計算三角形中未知長度的邊和未知的角度,在導航、工程學以及物理學方面都有普遍的用途。python

常見的三角函數包括正弦函數、餘弦函數和正切函數。下面咱們來學習這三個常見的三角函數:數組

函數 描述
sin() 數組中角度的正弦值
cos() 數組中角度的餘弦值
tan() 數組中角度的正切值
arcsin() 數組中角度的反正弦值
arccos() 數組中角度的反餘弦值
arctan() 數組中角度的反正切值
degrees() 將弧度轉換成角度

咱們直接來看實例:ide

import numpy as np
a = np.array([0, 30, 45, 60, 90])
print(np.char.center('不一樣角度的正弦值', 30, '*'))# 經過乘 pi/180 轉化爲弧度sin = np.sin(a*np.pi/180)print(sin)print('\n')
print(np.char.center('不一樣角度的餘弦值', 30, '*'))# 經過乘 pi/180 轉化爲弧度cos = np.cos(a*np.pi/180)print(cos)print('\n')
print(np.char.center('不一樣角度的正切值', 30, '*'))# 經過乘 pi/180 轉化爲弧度tan = np.tan(a*np.pi/180)print(tan)print('\n')
print(np.char.center('不一樣角度的反正弦值', 30, '*'))arcsin = np.arcsin(sin)# 將弧度轉換成角度打印輸出print(np.degrees(arcsin))print('\n')
print(np.char.center('不一樣角度的反餘弦值', 30, '*'))arccos = np.arccos(cos)# 將弧度轉換成角度打印輸出print(np.degrees(arccos))print('\n')
print(np.char.center('不一樣角度的反正切值', 30, '*'))arctan = np.arctan(tan)# 將弧度轉換成角度打印輸出print(np.degrees(arctan))print('\n')
# 返回***********不一樣角度的正弦值***********[0.         0.5        0.70710678 0.8660254  1.        ]***********不一樣角度的餘弦值***********[1.00000000e+00 8.66025404e-01 7.07106781e-01 5.00000000e-01 6.12323400e-17]***********不一樣角度的正切值***********[0.00000000e+00 5.77350269e-01 1.00000000e+00 1.73205081e+00 1.63312394e+16]**********不一樣角度的反正弦值***********[ 0. 30. 45. 60. 90.]**********不一樣角度的反餘弦值***********[ 0. 30. 45. 60. 90.]**********不一樣角度的反正切值***********[ 0. 30. 45. 60. 90.]

上面例子中,咱們先計算不一樣角度的正弦值、餘弦值、正切值,而後咱們經過反三角函數,將前面計算的值計算成弧度,而後經過 degrees 函數轉換成角度。咱們能夠看到最後出來的角度和開始輸入的數組的角度是同樣的。函數

NumPy 四捨五入函數

咱們在數據的處理中可能會遇到須要將一組數字進行四捨五入操做,這時候咱們就可使用 NumPy 提供的四捨五入函數來處理了。學習

函數 描述
around() 四捨五入
round() 捨棄小數位
floor() 向下取整
ceil() 向上取整

numpy.around()

對數組中的數字進行四捨五入spa

咱們來看實例:code

import numpy as np
a = np.array([1, 2.0, 30.12, 129.567])
# 四捨五入(取整)print(np.around(a))# 四捨五入(取一位小數)print(np.around(a, decimals=1))# 四捨五入(取小數點左側第一位)print(np.around(a, decimals=-1))
# 返回[  1.   2.  30. 130.][  1.    2.   30.1 129.6][  0.   0.  30. 130.]

咱們能夠經過 decimals 參數來表示舍入的小數位數,默認值爲0。若是爲負,整數將四捨五入到小數點左側的位置。orm

numpy.round()

對數組中的數字進行若干位的捨棄。htm

咱們來看實例:

import numpy as np
a = np.array([1, 2.0, 30.12, 129.567])
# 只舍不入(取整)print(np.around(a))# 只舍不入(到小數點後一位)print(np.around(a, decimals=1))# 只舍不入(取小數點左側第一位)print(np.around(a, decimals=-1))
# 返回[  1.   2.  30. 130.][  1.    2.   30.1 129.6][  0.   0.  30. 130.]

這個函數與 around 函數的區別就是隻是捨棄,不作四捨五入。

numpy.floor()

返回小於或者等於指定表達式的最大整數,即向下取整。

咱們來看實例:

import numpy as np
a = np.array([1, 2.0, 30.12, 129.567])
# 向下取整print(np.floor(a))
# 返回[  1.   2.  30. 129.]

這個函數很好理解,就是捨棄小數位。

numpy.ceil()

返回大於或者等於指定表達式的最小整數,即向上取整。

咱們來看實例:

import numpy as np
a = np.array([1, 2.0, 30.12, 129.567])
# 向上取整print(np.ceil(a))
# 返回[  1.   2.  31. 130.]

這個函數和上面的 floor 是相反含義的函數,向上取整意思是若是沒有小數位或者小數位是0,取當前整數;若是有小數位而且小數位不是0,則取當前數字的整數加1。

NumPy 算術函數

接下來咱們來介紹一下 NumPy 的幾個經常使用的算術函數:

函數 描述
add() 兩個數組元素相加
multiply() 兩個數組元素相乘
divide() 兩個數組元素相除
subtract() 兩個數組元素相減
pow() 將第一個輸入數組中的元素做爲底數,計算它與第二個輸入數組中相應元素的冪
mod() 計算輸入數組中相應元素的相除後的餘數

咱們先來看看兩個數組元素的加減乘除的實例:

import numpy as np
a = np.arange(6, dtype=np.float_).reshape(2, 3)print('第一個數組:')print(a)print('第二個數組:')b = np.array([10, 10, 10])print(b)print('\n')
print(np.char.center('兩個數組相加', 20, '*'))print(np.add(a, b))print('\n')
print(np.char.center('兩個數組相減', 20, '*'))print(np.subtract(a, b))print('\n')
print(np.char.center('兩個數組相乘', 20, '*'))print('兩個數組相乘:')print(np.multiply(a, b))print('\n')
print(np.char.center('兩個數組相除', 20, '*'))print(np.divide(a, b))print('\n')
# 返回第一個數組:[[0. 1. 2.] [3. 4. 5.]]第二個數組:[10 10 10]*******兩個數組相加*******[[10. 11. 12.] [13. 14. 15.]]*******兩個數組相減*******[[-10.  -9.  -8.] [ -7.  -6.  -5.]]*******兩個數組相乘*******兩個數組相乘:[[ 0. 10. 20.] [30. 40. 50.]]*******兩個數組相除*******[[0.  0.1 0.2] [0.3 0.4 0.5]]

在上面例子中,咱們先定義了兩個數組,第一個是一個二維數組,第二個是一個一維數組,而後對兩個數組的元素進行加減乘除操做,返回的是一個二維數組。

這裏須要注意的是數組必須具備相同的形狀或符合數組廣播規則。

numpy.pow

將第一個輸入數組中的元素做爲底數,計算它與第二個輸入數組中相應元素的冪。

咱們先來看看實例:

import numpy as np
c = np.array([10, 100, 1000])print('第一個數組是:')print(c)print('\n')
print(np.char.center('調用 power 函數', 20, '*'))print(np.power(c, 2))print('\n')
d = np.array([1, 2, 3])print('第二個數組是:')print(d)print('\n')
print(np.char.center('再次調用 power 函數', 20, '*'))print(np.power(c, d))
# 返回第一個數組是:[  10  100 1000]****調用 power 函數*****[    100   10000 1000000]第二個數組是:[1 2 3]***再次調用 power 函數****[        10      10000 1000000000]

從例子中咱們能夠看到,若是第二個參數是數字,就將第一個參數數組中的每一個元素做爲底數,計算它與第二個參數的冪;若是第二個參數是數組,那就將第一個參數數組中的每一個元素做爲底數,計算它與第二個數組中元素的冪。

numpy.mod()

計算輸入數組中相應元素的相除後的餘數。

咱們先來看看實例:

import numpy as np
e = np.array([10, 20, 30])f = np.array([3, 5, 7])print('第一個數組:')print(e)print('\n')
print('第二個數組:')print(f)print('\n')
print(np.char.center('調用 mod 函數', 20, '*'))print(np.mod(e, f))
# 返回第一個數組:[10 20 30]第二個數組:[3 5 7]*****調用 mod 函數******[1 0 2]

這裏也須要注意數組必須具備相同的形狀或符合數組廣播規則。

總結

本文向你們介紹了 NumPy 的數學函數,包括三角函數、四捨五入函數和算術函數。這些函數在一些數據分析中比較常見,運用得好會使你事半功倍。

參考

https://numpy.org/devdocs/reference/routines.math.html

文中示例代碼:python-100-days

系列文章
第 83 天:NumPy 字符串操做
第 82 天:Python Web 開發之 JWT 簡介
第 81 天:NumPy Ndarray 對象及數據類型
從 0 學習 Python 0 - 80 大合集總結
相關文章
相關標籤/搜索