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