官术网_书友最值得收藏!

1.3 理解基本數(shù)學函數(shù)

基本數(shù)學函數(shù)在許多應用中都會出現(xiàn)。例如,對數(shù)可以將呈指數(shù)增長的數(shù)據(jù)進行縮放,從而得到線性數(shù)據(jù)。指數(shù)函數(shù)和三角函數(shù)在處理幾何信息時是常用的工具,伽馬函數(shù)出現(xiàn)在組合數(shù)學中,高斯誤差函數(shù)則在統(tǒng)計學中至關重要。

Python標準庫中的math模塊提供了所有標準數(shù)學函數(shù),以及常用的常數(shù)和一些實用函數(shù),可以使用以下命令導入:

一旦導入了該模塊,我們就可以使用此模塊包含的所有數(shù)學函數(shù)。例如,為了得到非負數(shù)的平方根,我們可以使用math模塊中的sqrt函數(shù):

嘗試給sqrt函數(shù)傳遞負數(shù)參數(shù)會拋出ValueError異常。sqrt函數(shù)僅處理實數(shù),負數(shù)的平方根對于該函數(shù)是未定義的。負數(shù)的平方根是一個復數(shù),可以使用Python標準庫中cmath模塊對應的sqrt函數(shù)進行求解。

正弦、余弦和正切三角函數(shù)在math模塊中分別以常用的縮寫形式sin、cos和tan提供。常數(shù)pi保存著π的值,約為3.1416:

在math模塊中,反三角函數(shù)分別以acos、asin和atan的名稱命名:

math模塊中的log函數(shù)用于執(zhí)行對數(shù)運算,它有一個可選參數(shù)用于指定對數(shù)的底(請注意,第二個參數(shù)只是位置參數(shù))。默認情況下,如果沒有可選參數(shù),它是以e為底的自然對數(shù)。常數(shù)e可以使用math.e方法進行訪問:

math模塊還包含gamma函數(shù)(伽馬函數(shù)),以及在統(tǒng)計學中非常重要的erf函數(shù)(高斯誤差函數(shù)),這兩個函數(shù)都是由積分定義的。伽馬函數(shù)由以下積分定義:

高斯誤差函數(shù)由以下積分定義:

高斯誤差函數(shù)定義中的積分無法使用微積分進行計算,而必須通過數(shù)值計算進行估計:

除了三角函數(shù)、對數(shù)和指數(shù)函數(shù)等標準函數(shù)之外,math模塊還包含各種理論函數(shù)和組合函數(shù)。其中包括comb函數(shù)和factorial函數(shù),它們在很多應用中都很有用。comb函數(shù)調用時帶有參數(shù)nk,如果不考慮元素的順序,它會返回從包含n個元素的集合中無重復地選取k個元素的方式總數(shù)。例如,先選取1然后選取2,這與先選取2然后選取1是相同的。這個組合數(shù)有時被寫作。階乘函數(shù)factorial被調用時帶有參數(shù)n,它返回n的階乘,即n!=n(n-1)(n-2)…1:

將factorial函數(shù)應用于負數(shù)會拋出ValueError異常。整數(shù)n的階乘與伽馬函數(shù)在n+1處的值相等,即

Γ(n+1)=n!

math模塊還包含一個名為gcd的函數(shù),該函數(shù)返回其參數(shù)的最大公約數(shù)。整數(shù)ab的最大公約數(shù)k是能同時整除ab的最大整數(shù):

math模塊還有許多用于處理浮點數(shù)的函數(shù)。fsum函數(shù)對一組可迭代的數(shù)字執(zhí)行加法運算,并跟蹤每一步的總和,以減少結果中的誤差。下面的例子很好地說明了這一點:

如果參數(shù)之間的差值小于容差,isclose函數(shù)將返回True。這在單元測試中尤其有用,因為在單元測試中,基于機器架構或數(shù)據(jù)變化,計算結果可能會有很小的變化。

最后,math模塊中的floor和ceil函數(shù)提供了對參數(shù)的向下和向上取整的整數(shù)結果。一個數(shù)x向下取整(floor函數(shù))結果是滿足fx的最大的整數(shù)f,而x向上取整(ceil函數(shù))結果是滿足xc的最小的整數(shù)c。在將一個數(shù)除以另一個數(shù)得到的浮點數(shù)轉化為整數(shù)時,這些函數(shù)非常有用。

math模塊中的函數(shù)是用C語言實現(xiàn)的(假設你運行的是CPython),因此它們比用Python實現(xiàn)的函數(shù)要快得多。如果你需要將函數(shù)應用于相對較小的數(shù)字集合,那么此模塊是一個不錯的選擇。如果你同時想要將這些函數(shù)應用于大型數(shù)據(jù)集,那么最好使用NumPy包中的等價函數(shù),因為NumPy處理數(shù)組更有效。一般來說,如果你已經導入了NumPy包,那么最好總是使用NumPy的等價函數(shù)來減少出錯的可能性。考慮到這一點,現(xiàn)在讓我們開始介紹NumPy包及其基本對象“多維數(shù)組”吧。

主站蜘蛛池模板: 弥渡县| 和顺县| 吴桥县| 海伦市| 大新县| 尚义县| 阿图什市| 石楼县| 平阳县| 昌都县| 柳州市| 花莲市| 旬邑县| 福贡县| 五河县| 明溪县| 宜都市| 广平县| 阿克陶县| 许昌市| 襄垣县| 樟树市| 丘北县| 广饶县| 页游| 防城港市| 通辽市| 朝阳区| 长垣县| 时尚| 济南市| 马边| 昌宁县| 元朗区| 潞西市| 凉山| 嘉黎县| 肃北| 秭归县| 广汉市| 黔西县|