Python教程

Python 3 math 库函数一览表

本文主要是介绍Python 3 math 库函数一览表,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

python math 模块提供了对 C 标准定义的数学函数的访问,该模块中的函数不能用于复数,如需支持复数,可使用 cmath 模块中的同名函数。

查看 math 模块的内容:

>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
>>> help(math)

注意:该模块所有函数的返回值类型若未明确说明,都为浮点数。 

数论和表示函数

函数描述实例
math.ceil(x)返回 >= x 的最小整数 (int)

>>> math.ceil(2.2)

3

math.floor(x)返回 <= x 的最大整数 (int)

>>> math.floor(3.6)

3

math.modf(x)

返回 x 的小数部分和整数部分,两个结果都带有 x 的符号并且是浮点数。

注意:Python 浮点数通常不超过 53 位的精度(与 C double 相同),任何 abs(x) >= 2**52 的浮点数 x 必然没有小数位。

>>> math.modf(3.4)
(0.3999999999999999, 3.0)

>>> math.modf(2**52+0.55)
(0.0, 4503599627370497.0)

math.comb(n, k)

返回从 n 个项目中选出 k 个项目的方法数,不重复且无顺序,也称为二项式系数。

当 k <= n 时,n! / (k! * (n - k)!)

当 k > n 时,为 0

>>> math.comb(3, 2)

3

>>> math.comb(2, 3)

0

math.perm(nk=None)

返回从 n 个项目中选择 k 个项目的方法数,不重复且有顺序

当 k <= n 时,n! / (n - k)!

当 k > n 时,为 0

当 k = None 时,k 默认为 n ,函数返回 n!

>>> math.perm(3, 2)
6
>>> math.perm(2, 3)
0
math.copysign(x, y)返回一个大小为 x 的绝对值,符号同 y 的浮点数

>>> math.copysign(1.2, -3)

-1.2

>>> math.copysign(-1, 3)

1.0

math.fabs(x)返回 x 的绝对值

>>> math.fabs(-2)

-2

math.factorial(x)返回 x 的阶乘 (int)

>>> math.factorial(4)

24

math.fmod(x, y)

取余,与 x % y 可能会返回不同的结果

math.fmod(x, y) 符号同 x,x % y 符号同 y

在处理 float 时,通常首选函数 fmod(),而在处理 int 时,首选 x % y。

>>> math.fmod(7, -2)
1.0
>>> 7 % -2
-1
math.remainder(x, y)

取余(遵循 IEEE 754),若 x / y 正好位于两个连续整数的中间,则商使用最近的偶数

>>> math.remainder(5, 2)
1.0
>>> math.remainder(7, 2)
-1.0
math.frexp(x)

用以获得浮点数的内部表示,返回 x 的尾数和指数 (m, e),m 为 float,e 为 int,x == m * 2**e。若 x 为 0,则返回 (0.0, 0),否则 0.5 <= abs(m) < 1

>>> math.frexp(3.4)

(0.85, 2)

math.ldexp(x, i)返回 x * (2**i),本质上是函数 frexp() 的反函数>>> math.ldexp(0.85, 2)
3.4
math.fsum(iterable)

返回可迭代对象中值的准确浮点总和,通过跟踪多个中间部分的总和来避免精度损失。

ASPN cookbook recipes for accurate floating point summation.

>>> sum([.1]*10)
0.9999999999999999
>>> math.fsum([.1]*10)
1.0
math.gcd(*integers)

GCD: Greatest Common Divisor

返回所有参数 (int) 的最大公约数

>>>math.gcd(4, 6, 8)

2

math.lcm(*integers)

LCM: Least Common Multiple

返回所有参数 (int) 的最小公倍数

>>>math.lcm(3, 5)

15

math.isclose(ab*

rel_tol=1e09

abs_tol=0.0)

根据给定的 rel_tol 和 abs_tol 确定 a, b 是否接近,rel_tol 是相对容差,abs_tol 是最小绝对容差。若 abs(a-b) <= 

max(rel_tol * max(abs(a), abs(b)), abs_tol),返回 True

>>> math.isclose(3.4, 3.4)

True

math.isfinite(x)若 x 既不是无穷大也不是 NaN,则返回 True,否则返回 False

>>> math.isfinite(3.4)

True

math.isinf(x)若 x 是正无穷大或负无穷大,则返回 True,否则返回 False。

>>> math.isinf(float('inf'))

True

math.isnan(x)若 x 是 NaN(非数),则返回 True,否则返回 False。

>>> math.isnan(float('nan'))

True

math.isqrt(n)

ISqRt: Integer Square Root

返回非负整数 n 的整数平方根 a ,使得 a²≤n

>>> math.isqrt(5)

2

math.nextafter(x, y)返回 x 之后朝向 y 的下一个浮点值>>> math.nextafter(3, math.inf)
3.0000000000000004
>>> math.nextafter(3, 0.0)
2.9999999999999996
math.ulp(x)

ULP: Unit in the Last Place

返回浮点数 x 的最低有效位的值,这样第一个大于 x 的浮点数是 x + ulp(x)。

>>> math.ulp(3.4)
4.440892098500626e-16
math.prod(iterable*start=1)

prod : product

返回 start 与 iterable 中各元素的乘积,若 iterable为空,则返回start

>>> math.prod((2, 3))
6
>>> math.prod((2, 3), start=2)
12
math.trunc(x)

trunc : truncate

将实数 x 截断为int (通常为 int) 

>>> math.trunc(3.4)
3

幂函数和对数函数

函数描述实例
math.exp(x)返回 e 的 x 次幂,其中 e = 2.718281……是自然对数的底。这通常比 math.e ** x 或 pow(math.e, x) 更准确>>> math.exp(2)
7.38905609893065
math.expm1(x)

expm1: exp, minus 1

返回 e 的 x 次幂,减去 1。对于小浮点数 x,exp(x) - 1 会导致精度的显着损失;exp.m1() 函数提供了一种方法来计算到全精度

>>> math.exp(1e-5) - 1
1.0000050000069649e-05
>>> math.expm1(1e-5)
1.0000050000166667e-05
math.log(x[, base])返回以base为底,x 的对数,计算为 log(x)/log(base)。若未指定base,默认为e>>> math.log(2)
0.6931471805599453
>>> math.log(2, 2)
1.0
math.log1p(x)返回 1+x(以 e 为底)的自然对数。结果的计算方式对于接近零的 x 是准确的>>> math.log1p(2)
1.0986122886681098
math.log2(x)返回 x 的以 2 为底的对数。这通常比 log(x, 2) 更准确>>> math.log2(2)
1.0
math.log10(x)返回 x 的以 10 为底的对数。这通常比 log(x, 10) 更准确>>> math.log10(100)
2.0
math.pow(x, y)返回 x 的 y 次幂。与内置的 ** 运算符不同,math.pow() 将其两个参数都转换为 float 类型。使用 ** 或内置的 pow() 函数计算精确的整数幂。

>>> math.pow(2, 3)
8.0

>>> pow(2, 3)
8

math.sqrt((x)返回 x 的平方根 ( square root )>>> math.sqrt(4)
2.0

三角函数

函数描述实例
math.sin(x)

sin : sine

返回 x 弧度的正弦值

>>> math.sin(math.pi/2)
1.0
math.asin(x)

asin : arc sine

返回 x 的反正弦,单位:弧度。结果在 -pi/2 和 pi/2 之间

>>> math.asin(1)
1.5707963267948966
math.cos(x)

cos : cosine

返回 x 弧度的余弦值

>>> math.cos(math.pi)
-1.0
math.acos(x)

acos : arc cosine

返回 x 的反余弦值,单位:弧度。结果在 0 和 pi 之间

>>> math.acos(-1)
3.141592653589793
math.tan(x)

tan : tangent

返回 x 弧度的切线

>>> math.tan(math.pi/4)
0.9999999999999999
math.atan(x)

atan : arc tangent

返回 x 的反正切,单位:弧度。结果介于 -pi/2 和 pi/2 之间。

>>> math.atan(1)
0.7853981633974483
math.atan2(y, x)返回平面中从原点到点 (x, y) 的向量与正 X 轴形成的角度 atan(y / x),单位:弧度。结果介于 -pi 和 pi 之间。>>> math.atan2(1, 1)
0.7853981633974483
math.dist(p, q)

dist : distance

返回两点 p 和 q 之间的欧几里得距离,每个点都作为坐标序列(或可迭代)给出。这两个点必须具有相同的维度。大致相当于:

sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q)))
>>> math.dist((1, 1), (2, 2))
1.4142135623730951

math.hypot

(*coordinates)

hypot : hypotenuse (斜边)

返回欧几里得范数,sqrt(sum(x**2 for x in coordinates))。这是从原点到坐标给定点的向量的长度。对于二维点 (x, y),这等效于使用勾股定理 sqrt(x*x + y*y) 计算直角三角形的斜边。3.8 版之前仅支持二维,之后添加了对n维点的支持。

>>> math.hypot(1, 1)
1.4142135623730951

角度转换

函数描述实例
math.degrees(x)将角度 x 从弧度转换为度数>>> math.degrees(math.pi)
180.0
math.radians(x)将角度 x 从度数转换为弧度>>> math.radians(180)
3.141592653589793

双曲函数

函数描述
math.cosh(x)

返回 x 的双曲余弦值, h : hyperbolic

math.acosh(x)返回 x 的反双曲余弦值, a: arc
math.sinh(x)返回 x 的双曲正弦值
math.asinh(x)返回 x 的反双曲正弦值
math.tanh(x)返回 x 的双曲正切值
math.atanh(x)返回 x 的反双曲正切值

特殊函数

函数描述
math.erf(x)

erf : error function

返回 x 处的误差函数。可用于计算传统的统计函数,例如累积标准正态分布(cumulative standard normal distribution):

def phi(x):
    'Cumulative distribution function for the standard normal distribution'
    return (1.0 + erf(x / sqrt(2.0))) / 2.0
math.erfc(x)

c : complementary

返回 x 处的互补误差函数。互补误差函数定义为 1.0 - erf(x),它用于较大的 x 值(从 1 中减去会导致显着性损失)。

math.gamma(x)返回 x 处的 Gamma 函数
math.lgamma(x)

l : logarithm

返回 Gamma 函数在 x 处的绝对值的自然对数

常数

函数描述
math.pi数学常数 π = 3.141592…,达到可用精度
math.e数学常数 e = 2.718281…,达到可用精度
math.tau数学常数 τ = 6.283185…,达到可用精度。Tau 是一个圆常数,等于 2π,即圆的周长与其半径的比值。要了解有关 Tau 的更多信息,请观看 Vi Hart 的视频  Pi is (still) Wrong
math.inf浮点正无穷大,相当于 float('inf') 的输出。负无穷大:-math.inf
math.nan浮点“非数”(NaN) 值,相当于 float('nan') 的输出

这篇关于Python 3 math 库函数一览表的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!