Python中非常實用的Math模塊函數(shù)教程詳解
由于該math模塊與 Python 版本一起打包,因此您不必單獨安裝它,直接導入:
import math
math模塊常數(shù)
Pythonmath模塊提供了多種預定義常量。訪問這些常量提供了幾個優(yōu)點。一方面,您不必手動將它們硬編碼到您的應用程序中,這為您節(jié)省了大量時間。另外,它們在整個代碼中提供一致性。該模塊包括幾個著名的數(shù)學常數(shù)和重要值:
圓周率π
Tau (τ)
歐拉數(shù)e
無限
不是數(shù)字 (NaN)
1. 圓周率
Pi (π) 是圓的周長 ( c ) 與其直徑 ( d )的比值:
π = c/d
對于任何圓,該比率始終相同。
Pi 是一個無理數(shù),這意味著它不能表示為一個簡單的分數(shù)。因此,pi 的小數(shù)位數(shù)是無限的,但可以近似為 22/7,即 3.141。
您可以按如下方式訪問 pi:
>>> math.pi 3.141592653589793
如您所見,在 Python 中 pi 值保留為小數(shù)點后十五位。提供的位數(shù)取決于底層 C 編譯器。Python 默認打印前 15 位數(shù)字,并math.pi始終返回一個浮點值。
那么 pi 可以通過哪些方式對您有用呢?您可以使用 2π r計算圓的周長,其中r是圓的半徑:
>>> r = 3
>>> circumference = 2 * math.pi * r
>>> f"Circumference of a Circle = 2 * {math.pi:.4} * {r} = {circumference:.4}"
'Circumference of a Circle = 2 * 3.142 * 3 = 18.85'
您可以使用它math.pi來計算圓的周長。您還可以使用公式 π r ²計算圓的面積,如下所示:
>>> r = 5
>>> area = math.pi * r * r
>>> f"Area of a Circle = {math.pi:.4} * {r} * {r} = {area:.4}"
'Area of a Circle = 3.142 * 5 * 5 = 78.54'
2. Tau (τ)
Tau (τ) 是圓的周長與其半徑的比值。這個常數(shù)等于 2π,或大約 6.28。與 pi 一樣,tau 是一個無理數(shù),因為它只是 pi 乘以 2。
許多數(shù)學表達式使用 2π,而使用 tau 可以幫助簡化方程。例如,我們可以用 tau 代替 tau 并使用更簡單的方程 τ r,而不是用 2π r計算圓的周長。
然而,使用 tau 作為圓常數(shù)仍存在爭議。您可以根據(jù)需要自由使用 2π 或 τ。
您可以使用 tau 如下:
>>> math.tau 6.283185307179586
像math.pi,math.tau返回十五位數(shù)字并且是一個浮點值。您可以使用 tau 計算具有 τ r的圓的周長,其中r是半徑,如下所示:
>>> r = 3
>>> circumference = math.tau * r
>>> f"Circumference of a Circle = {math.tau:.4} * {r} = {circumference:.4}"
'Circumference of a Circle = 6.283 * 3 = 18.85'
您可以使用math.tau代替2 * math.pi來整理包含表達式 2π 的方程。
3. 歐拉數(shù)
歐拉數(shù) ( e ) 是一個常數(shù),它是自然對數(shù)的底數(shù),自然對數(shù)是一種常用于計算增長率或衰減率的數(shù)學函數(shù)。與 pi 和 tau 一樣,歐拉數(shù)是一個具有無限小數(shù)位的無理數(shù)。e的值通常近似為 2.718。
歐拉數(shù)是一個重要的常數(shù),因為它有許多實際用途,例如計算人口隨時間的增長或確定放射性衰變率。您可以從math模塊中訪問歐拉數(shù),如下所示:
>>> math.e 2.718281828459045
4. 無限
無窮大不能由數(shù)字定義。相反,它是一個數(shù)學概念,代表永無止境或無限的事物。無窮大可以朝任一方向發(fā)展,正向或負向。
當您想將給定值與絕對最大值或最小值進行比較時,您可以在算法中使用無窮大。
Python中正無窮大和負無窮大的取值如下:
>>> f"Positive Infinity = {math.inf}"
'Positive Infinity = inf'
>>> f"Negative Infinity = {-math.inf}"
'Negative Infinity = -inf'
無窮大不是數(shù)值。相反,它被定義為math.inf. Python 在 3.5 版中引入了這個常量,相當于float(“inf”):
>>> float("inf") == math.inf
True
既float(“inf”)和math.inf表示無窮大的概念,使得math.inf大于任何數(shù)值:
>>> x = 1e308 >>> math.inf > x True
上面代碼中,math.inf大于x10 308(浮點數(shù)的最大大?。┑闹?,為雙精度數(shù)。
同樣,-math.inf小于任何值:
>>> y = -1e308 >>> y > -math.inf True
負無窮小于 的值y,即 -10 308。沒有數(shù)字可以大于無窮大或小于負無窮大。這就是為什么數(shù)學運算 withmath.inf不會改變無窮大的值:
>>> math.inf + 1e308 inf >>> math.inf / 1e308 inf
5. 不是數(shù)字
不是數(shù)字或 NaN 并不是真正的數(shù)學概念。它起源于計算機科學領域,作為對非數(shù)字值的引用。NaN值可以是由于無效的輸入,或者它可以指示一個變量即應該是數(shù)值已經(jīng)由文本字符或符號損壞。
檢查值是否為 NaN 始終是最佳實踐。如果是,那么它可能會導致您的程序中出現(xiàn)無效值。Python 在 3.5 版本中引入了 NaN 常量。
您可以觀察以下值math.nan:
>>> math.nan nan
NaN 不是數(shù)值。你可以看到,價值math.nan是nan,相同的值float(“nan”)。
算術函數(shù)
1. factorial()
僅僅為了得到一個數(shù)的階乘而實現(xiàn)自己的函數(shù)既耗時又低效。更好的方法是使用math.factorial().。
以下是如何使用 找到數(shù)字的階乘math.factorial():
>>> math.factorial(7) 5040
2. ceil()
math.ceil()將返回大于或等于給定數(shù)字的最小整數(shù)值。如果數(shù)字是正小數(shù)或負小數(shù),則函數(shù)將返回下一個大于給定值的整數(shù)值。
例如,輸入 5.43 將返回值 6,輸入 -12.43 將返回值 -12。math.ceil()可以將正實數(shù)或負實數(shù)作為輸入值,并且將始終返回整數(shù)值。
當您向 輸入整數(shù)值時ceil(),它將返回相同的數(shù)字:
>>> math.ceil(6) 6 >>> math.ceil(-11) -11
3. floor()
floor()將返回小于或等于給定數(shù)字的最接近的整數(shù)值。此函數(shù)的行為與 相反ceil()。例如,輸入 8.72 將返回 8,輸入 -12.34 將返回 -13。floor()可以將正數(shù)或負數(shù)作為輸入,并返回一個整數(shù)值。
如果您輸入一個整數(shù)值,則該函數(shù)將返回相同的值:
>>> math.floor(4) 4 >>> math.floor(-17) -17
4. trunc()
當您得到一個帶小數(shù)點的數(shù)字時,您可能只想保留整數(shù)部分并消除小數(shù)部分。該math模塊有一個被調(diào)用的函數(shù)trunc(),它可以讓你做到這一點。
刪除十進制值是一種四舍五入。使用trunc(),負數(shù)總是向上舍入到零,正數(shù)總是向下舍入到零。
以下是該trunc()函數(shù)如何舍入正數(shù)或負數(shù):
>>> math.trunc(12.32) 12 >>> math.trunc(-43.24) -43
5. isclose()
例如,采用以下一組數(shù)字:2.32、2.33 和 2.331。當你用兩個小數(shù)點來衡量接近度時,2.32 和 2.33 是接近的。但實際上,2.33 和 2.331 更接近。因此,親近是一個相對的概念。如果沒有某種閾值,您就無法確定接近度。
幸運的是,該math模塊提供了一個名為的函數(shù)isclose(),可讓您為接近度設置自己的閾值或容忍度。它返回True如果兩個數(shù)字是你建立親密,否則返回公差范圍內(nèi)False。
讓我們看看如何使用默認容差比較兩個數(shù)字:
- 相對容差或rel_tol是相對于輸入值的幅度被認為“接近”的最大差異。這是公差的百分比。默認值為 1e-09 或 0.000000001。
- 絕對容差或abs_tol是被視為“接近”的最大差異,而不管輸入值的大小。默認值為 0.0。
isclose使用上面的表達式來確定兩個數(shù)字的接近程度。您可以替換自己的值并觀察任何兩個數(shù)字是否接近。
在以下情況下,6 和 7不接近:
>>> math.isclose(6, 7) False
數(shù)字 6 和 7 不被視為接近,因為相對容差設置為九位小數(shù)。但是,如果你輸入6.999999999和7相同的誤差下,那么他們被認為是接近:
>>> math.isclose(6.999999999, 7) True
冪函數(shù)
power 函數(shù)將任何數(shù)字x作為輸入,將x提高到某個n 次冪,然后返回x n作為輸出。
Python 的math模塊提供了幾個與冪的功能。在本節(jié)中,您將了解冪函數(shù)、指數(shù)函數(shù)和平方根函數(shù)。
您可以使用math.pow()來獲取數(shù)字的冪。math.pow() 需要兩個參數(shù),第一個參數(shù)是基值,第二個參數(shù)是冪值。
>>> math.pow(2, 5) 32.0 >>> math.pow(5, 2.4) 47.59134846789696
1. exp()
math模塊提供了一個函數(shù) ,exp()可讓您計算數(shù)字的自然指數(shù)。
您可以按如下方式找到該值:
>>> math.exp(21) 1318815734.4832146 >>> math.exp(-1.2) 0.30119421191220214
2. 對數(shù)函數(shù)
log()有兩個論點。第一個是強制性的,第二個是可選的。使用一個參數(shù),您可以獲得輸入數(shù)字的自然對數(shù)(以e為底):
>>> math.log(4) 1.3862943611198906 >>> math.log(3.4) 1.2237754316221157
math模塊還提供了兩個單獨的函數(shù),可讓您計算以 2 和 10 為底的對數(shù)值:
log2() 用于計算以 2 為底的對數(shù)值。
log10() 用于計算以 10 為底的對數(shù)值。
>>> math.log2(math.pi) 1.6514961294723187 >>> math.log(math.pi, 2) 1.651496129472319 >>> math.log10(math.pi) 0.4971498726941338 >>> math.log(math.pi, 10) 0.4971498726941338
其他重要的math模塊功能
math.gcd():計算兩個數(shù)字的最大公約數(shù);
math.fsum():在不使用循環(huán)的情況下找到可迭代值的總和;
math.sqrt():求任何正實數(shù)(整數(shù)或小數(shù))的平方根;
math.radians():返回度數(shù)輸入的弧度值;
math.degrees():將弧度轉換為度數(shù);
math.sin()、math.cos()、math.tan():計算正弦、余弦、正切;
以上就是Python中非常實用的Math模塊函數(shù)教程詳解的詳細內(nèi)容,更多關于Math模塊函數(shù)的資料請關注腳本之家其它相關文章!
相關文章
python GoogleIt庫實現(xiàn)在Google搜索引擎上快速搜索
這篇文章主要為大家介紹了python GoogleIt庫實現(xiàn)在Google搜索引擎上快速搜索功能探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01
python環(huán)境下OPenCV處理視頻流局部區(qū)域像素值
這篇文章主要為大家介紹了python環(huán)境下OPenCV處理視頻流局部區(qū)域像素值的實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-11-11
使用70行Python代碼實現(xiàn)一個遞歸下降解析器的教程
這篇文章主要介紹了使用70行Python代碼實現(xiàn)一個遞歸下降解析器的教程,文章分步講解最后整合出代碼,需要的朋友可以參考下2015-04-04
python調(diào)用Matplotlib繪制分布點并且添加標簽
這篇文章主要為大家詳細介紹了python調(diào)用Matplotlib繪制分布點并且添加標簽的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05

