天天看點

​【Python入門】Python數學math子產品55個函數詳解

​【Python入門】Python數學math子產品55個函數詳解

Python math 子產品提供了許多對浮點數的數學運算函數。主要包括以下幾個部分

  • 數論與表示函數
  • 幂函數與對數函數
  • 三角函數
  • 角度轉換
  • 雙曲函數
  • 特殊函數
  • 常量
import math
print(dir(math))
[ 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh',
 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 
'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma',
'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']      
注意:上面的函數是不能直接通路的,需要導入 math 子產品,通過靜态對象調用該方法。      

數論與表示函數

ceil()

描述:向上取整數,傳回 x 的上限,即大于或者等于 x 的最小整數

文法:math.ceil(x)

import math#需要導入數學子產品
math.ceil(5.1)
6
math.ceil(5.0)
5
math.ceil(5.8)
6      

copysign()

描述:傳回一個基于 x 的絕對值和 y 的符号的浮點數。在支援帶符号零的平台上,copysign(1.0, -0.0) 傳回 -1.0.

文法:math.copysign(x, y)

math.copysign(1,-1)
-1.0


math.copysign(-1,-1)
-1.0


math.copysign(-1,1)
1.      

fabs()

描述:傳回數字的絕對值

文法:math.fabs( x )

math.fabs(-45.17)
45.17


math.fabs(100)
100.0


math.fabs(math.pi)
3.14159265358979      

factorial()​

描述:以一個整數傳回 x 的階乘。如果 x 不是整數或為負數時則将引發 ValueError。

文法:math.factorial( x )

math.factorial(5)#1*2*3*4*5
120
math.factorial(3)#1*2*3
6      

floor()

描述:傳回 x 的向下取整,小于或等于 x 的最大整數。如果 x 不是浮點數,則委托 x.__floor__() ,它應傳回 Integral 值。

文法:math.floor( x )

math.floor(1.2)
1
math.floor(1.99)
1      

fmod()

描述:傳回餘數,函數 fmod() 在使用浮點數時通常是首選,而Python的 x % y 在使用整數時是首選。

文法:math.fmod(x, y)

math.fmod(10, 3)
1.0


math.fmod(8, 3)
2.0


math.fmod(8.2, 3)
2.199999999999999      

frexp()

描述:傳回 x 的尾數和指數作為對``(m, e)``。 m 是一個浮點數, e 是一個整數,正好是 x == m * 2**e 。如果 x 為零,則傳回 (0.0, 0) ,否則傳回 0.5 <= abs(m) < 1 。這用于以可移植方式“分離”浮點數的内部表示。

文法:math.frexp(x)

math.frexp(32)
(0.5, 6)      

fsum()

描述:對疊代器裡的每個元素進行求和操作,傳回疊代中的精确浮點值。通過跟蹤多個中間部分和來避免精度損失

文法:math.fsum( x )

math.fsum((1,2,3,4))
10.0


math.fsum([1,2,3,4])
10.0


sum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
0.9999999999999999


math.fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
1      

gcd()

描述:傳回整數 a 和 b 的最大公約數。如果 a 或 b 之一非零,則 gcd(a, b) 的值是能同時整除 a 和 b 的最大正整數。gcd(0, 0) 傳回 0。

文法:math.gcd( x,y)

math.gcd(12,6)
6
math.gcd(15,25)
5      

isclose()

描述:若 a 和 b 的值比較接近則傳回 True,否則傳回 False。根據給定的絕對和相對容差确定兩個值是否被認為是接近的。

文法:math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)

  • rel_tol 是相對容差 —— 它是 a 和 b 之間允許的最大內插補點,相對于 a 或 b 的較大絕對值。例如,要設定5%的容差,請傳遞 rel_tol=0.05 。預設容差為 1e-09,確定兩個值在大約9位十進制數字内相同。 rel_tol 必須大于零。
  • abs_tol 是最小絕對容差 —— 對于接近零的比較很有用。 abs_tol 必須至少為零。

如果沒有錯誤發生,結果将是:abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol) 。

IEEE 754特殊值 NaN , inf 和 -inf 将根據IEEE規則處理。具體來說, NaN 不被認為接近任何其他值,包括 NaN 。inf 和 -inf 隻被認為接近自己。

math.isclose(1.0,1.0000000000001)
True


math.isclose(1.0,1.000000001)
False      

isfinite()

描述:如果 x 既不是無窮大也不是NaN,則傳回 True ,否則傳回 False 。(注意 0.0 被認為 是 有限的。)

文法:math.isfinite(x)

math.isfinite(2)
True
math.isfinite(math.nan)
False
math.isfinite(math.inf)
False      

isinf()

描述:如果 x 是正或負無窮大,則傳回 True ,否則傳回 False 。

文法:math.isinf()

math.isinf(math.inf)
True
math.isinf(-math.inf)
True      

isnan()

描述:如果 x 是 NaN(不是數字),則傳回 True ,否則傳回 False 。

文法:math.isnan(x)

math.isnan(math.nan)
True      

ldexp()

描述:傳回 x * (2**i) 。這基本上是函數 frexp() 的反函數。

文法:math.ldexp(x, i)

math.ldexp(5, 3)
40.0


5 * (2**3)
40      

modf()

描述:傳回 x 的小數和整數部分。兩個結果都帶有 x 的符号并且是浮點數。

文法:math.modf(x)

math.modf(3.71828)
(0.71828, 3.0)      

remainder()

描述:傳回 IEEE 754 風格的 x 相對于 y 的餘數

文法:math.remainder(x, y)

math.remainder(14, 5)
-1.0


math.remainder(13, 5)
-2.0


math.remainder(12, 5)
2.0


math.remainder(11, 5)
1      

trunc()

描述:傳回 Real 值 x 截斷為 Integral (通常是整數)

文法:math.trunc(x)

math.trunc(3.718281828459045)
3      

幂函數與對數函數

exp()

描述:傳回 e 次 x 幂,其中 e = 2.718281... 是自然對數的基數。這通常比 math.e ** x 或 pow(math.e, x) 更精确。

文法:math.exp( x )

注意:exp()是不能直接通路的,需要導入 math 子產品,通過靜态對象調用該方法。

math.exp(1)
2.718281828459045


math.exp(0)
1.0


math.exp(3)
20.08553692318766      

expm1()

描述:傳回 e 的 x 次幂,減1。這裡 e 是自然對數的基數。對于小浮點數 x , exp(x) - 1 中的減法可能導緻 significant loss of precision; expm1() 函數提供了一種将此數量計算為全精度的方法

文法:math.expm1(x)

math.exp(1e-5) - 1
1.0000050000069649e-05


math.expm1(1e-5)
1.0000050000166667e-05


math.expm1(1)
1.718281828459045
math.expm1(2)
6.3890560989306      

log()

描述:使用一個參數,傳回 x 的自然對數(底為 e )。

文法:math.log(x[,base])

參數:

  • x -- 數值表達式。
  • base -- 可選,底數,預設為 e。
math.log(math.e)
1.0


math.log(20)
2.995732273553991


math.log(100,10)#傳回以10為底的對數
2.      

log1p()

描述:傳回 1+x (base e) 的自然對數。以對于接近零的 x 精确的方式計算結果。

文法:math.log1p(x)

math.log1p(1)
0.6931471805599453      

log2()

描述:傳回 x 以2為底的對數。這通常比 log(x, 2) 更準确。

文法:math.log2(x)

math.log2(8)
3.0      

log10()

描述:傳回 x 底為10的對數。這通常比 log(x, 10) 更準确。

文法:math.log10( x )

math.log10(100)
2.0
math.log10(1000)
3.0      

pow()

描述:傳回 (x的y次方) 的值。與内置的 ** 運算符不同, math.pow() 将其參數轉換為 float 類型。使用 ** 或内置的 pow() 函數來計算精确的整數幂。

文法:math.pow( x, y )

math.pow( 2, 4 )
16.0
math.pow( 10, 2 )
100.0      

sqrt()

描述:傳回數字x的平方根。

文法:math.sqrt( x )

math.sqrt(4)
2.0


math.sqrt(100)
10.0


math.sqrt(7)
2.6457513110645907


math.sqrt(math.pi)
1.77245385090551      

三角函數

acos()

描述:以弧度為機關傳回 x 的反餘弦值。

文法:math.acos(x)

math.acos(.5)
1.0471975511965979      

asin()

描述:以弧度為機關傳回 x 的反正弦值。

文法:math.asin(x)

math.asin(.5)
0.5235987755982989      

atan()

描述:以弧度為機關傳回 x 的反正切值。

文法:math.atan(x)

math.atan(1)
0.7853981633974483      

atan2()

描述:以弧度為機關傳回 atan(y / x) 。結果是在 -pi 和 pi 之間。從原點到點 (x, y) 的平面矢量使該角度與正X軸成正比。 atan2() 的點的兩個輸入的符号都是已知的,是以它可以計算角度的正确象限。例如, atan(1) 和 atan2(1, 1) 都是 pi/4 ,但 atan2(-1, -1) 是 -3*pi/4 。

文法:math.atan2(y, x)

math.atan2(1, 1)
0.7853981633974483


math.pi/4
0.7853981633974483      

cos()

描述:傳回 x 弧度的餘弦值。

文法:math.cos(x)

math.cos(math.pi/6)
0.8660254037844387      

hypot()

描述:傳回歐幾裡德範數, sqrt(x*x + y*y) 。這是從原點到點 (x, y) 的向量長度。

文法:math.hypot(x, y)

math.hypot(1, 1)
1.4142135623730951      

sin()

描述:傳回 x 弧度的正弦值。

文法:math.sin(x)

math.sin(math.pi/6)
0.49999999999999994      

tan()

描述:傳回 x 弧度的正切值。

文法:math.tan(x)

math.tan(math.pi/4)
0.9999999999999999      

角度轉換

degrees()

描述:将角度 x 從弧度轉換為度數。

文法:math.degrees(x)

math.degrees(math.pi)
180.0


math.degrees(3)
171.88733853924697      

radians()

描述:将角度 x 從度數轉換為弧度。

文法:math.radians(x)

math.radians(180)
3.141592653589793      

雙曲函數

雙曲函數 是基于雙曲線而非圓來對三角函數進行模拟。

​【Python入門】Python數學math子產品55個函數詳解

acosh()

描述:傳回 x 的反雙曲餘弦值。

文法:math.acosh(x)

math.acosh(3)
1.762747174039086      

asinh()

描述:傳回 x 的反雙曲正弦值。

文法:math.asinh(x)

math.asinh(1)
0.8813735870195429      

atanh()

描述:傳回 x 的反雙曲正切值。

文法:math.atanh(x)

math.atanh(0.5)
0.5493061443340549      

cosh()

描述:傳回 x 的雙曲餘弦值。

文法:math.cosh(x)

math.cosh(2)
3.7621956910836314      

sinh()

描述:傳回 x 的雙曲正弦值。

文法:math.sinh(x)

math.sinh(1)
1.1752011936438014      

tanh()

描述:傳回 x 的雙曲正切值。

文法:math.tanh(x)

math.tanh(3)
0.9950547536867305      

特殊函數

erf()

描述:傳回 x 處的 error function 。

文法:math.erf(x)

math.erf(1)
0.8427007929497149


erf() 函數可用于計算傳統的統計函數,如 累積标準正态分布
def phi(x):
return (1.0 + erf(x / sqrt(2.0))) / 2.0      

erfc()

描述:傳回 x 處的互補誤差函數。 互補錯誤函數 定義為 1.0 - erf(x)。它用于 x 的大值,從其中減去一個會導緻 有效位數損失。

文法:math.erfc(x)

math.erfc(1)
0.1572992070502851      

gamma()

描述:傳回 x 處的 伽馬函數 值。

文法:math.gamma(x)

math.gamma(4)
6.0      

lgamma()

描述:傳回Gamma函數在 x 絕對值的自然對數。

文法:math.lgamma(x)

math.lgamma(4)
1.7917594692280554      

常    量

pi

描述:圓周率。數學常數 π = 3.141592...,精确到可用精度。

文法:math.pi

math.pi
3.141592653589793      

e

描述:數學常數 e = 2.718281...,精确到可用精度。

文法:math. e

math.e
2.718281828459045      

tau

描述:數學常數 τ = 6.283185...,精确到可用精度。Tau 是一個圓周常數,等于 2π,圓的周長與半徑之比

文法:math.tau

math.tau
6.283185307179586      

inf

描述:浮點正無窮大。(對于負無窮大,使用 -math.inf 。)相當于``float('inf')`` 的輸出。

文法:math.inf

math.inf
inf      

nan

描述:浮點“非數字”(NaN)值。相當于 float('nan') 的輸出。

文法:math.nan

math.nan
nan