python math库
math.ceil(x)
返回?x?的向上取整,即大于或等于?x?的最小的整数。如果?x?不是浮点数,委托给?x.__ceil__?,它应该返回一个?Integral?的值。
math.comb(n,?k)
返回不重复且无顺序地从?n?项中选择?k?项的方式总数。
当?k?<=?n
?时取值为?n!?/?(k!?*?(n?-?k)!)
;当?k?>?n
?时取值为零。
也称为二项式系数,因为它等价于?(1?+?x)?
?的多项式展开中第 k 项的系数。
如果任一参数不为整数则会引发?TypeError。 如果任一参数为负数则会引发?ValueError。
3.8 新版功能.
math.copysign(x,?y)
返回一个基于?x?的绝对值和?y?的符号的浮点数。在支持带符号零的平台上,copysign(1.0,?-0.0)
?返回?-1.0.
math.fabs(x)
返回?x?的绝对值。
math.factorial(n)
将?n?的阶乘作为整数返回。 如果?n?不是正数或为负值则会引发?ValueError。
3.9 版后已移除:?接受具有整数值的浮点数 (例如?5.0
) 的行为已被弃用。
math.floor(x)
返回?x?的向下取整,小于或等于?x?的最大整数。如果?x?不是浮点数,则委托给?x.__floor__?,它应返回一个?Integral?值。
math.fmod(x,?y)
返回?fmod(x,?y)
?,由平台C库定义。请注意,Python表达式?x?%?y
?可能不会返回相同的结果。C标准的目的是?fmod(x,?y)
?完全(数学上;到无限精度)等于?x?-?n*y
?对于某个整数?n?,使得结果具有 与?x?相同的符号和小于?abs(y)
?的幅度。Python的?x?%?y
?返回带有?y?符号的结果,并且可能不能完全计算浮点参数。 例如,?fmod(-1e-100,?1e100)
?是?-1e-100
?,但Python的?-1e-100?%?1e100
?的结果是?1e100-1e-100
?,它不能完全表示为浮点数,并且取整为令人惊讶的?1e100
?。 出于这个原因,函数?fmod()?在使用浮点数时通常是首选,而Python的?x?%?y
?在使用整数时是首选。
math.frexp(x)
以?(m,?e)
?对的形式返回?x?的尾数和指数。?m?是一个浮点数,?e?是一个整数,正好是?x?==?m?*?2**e
?。 如果?x?为零,则返回?(0.0,?0)
?,否则返回?0.5?<=?abs(m)?<?1
?。这用于以可移植方式“分离”浮点数的内部表示。
math.fsum(iterable)
返回可迭代对象中的值的精确浮点总计值。 通过跟踪多个中间部分和来避免精度损失。
该算法的准确性取决于IEEE-754算术保证和舍入模式为半偶的典型情况。在某些非Windows版本中,底层C库使用扩展精度添加,并且有时可能会使中间和加倍,导致它在最低有效位中关闭。
有关待进一步讨论和两种替代方法,参见?ASPN cookbook recipes for accurate floating point summation。
math.gcd(*integers)
返回给定的整数参数的最大公约数。 如果有一个参数非零,则返回值将是能同时整除所有参数的最大正整数。 如果所有参数为零,则返回值为?0
。 不带参数的?gcd()
?返回?0
。
3.5 新版功能.
在 3.9 版更改:?添加了对任意数量的参数的支持。 之前的版本只支持两个参数。
math.isclose(a,?b,?*,?rel_tol=1e-09,?abs_tol=0.0)
若?a?和?b?的值比较接近则返回?True
,否则返回?False
。
根据给定的绝对和相对容差确定两个值是否被认为是接近的。
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
?只被认为接近自己。
3.5 新版功能.
参见
PEP 485?—— 用于测试近似相等的函数
math.isfinite(x)
如果?x?既不是无穷大也不是NaN,则返回?True
?,否则返回?False
?。 (注意?0.0
?被认为?是?有限的。)
3.2 新版功能.
math.isinf(x)
如果?x?是正或负无穷大,则返回?True
?,否则返回?False
?。
math.isnan(x)
如果?x?是 NaN(不是数字),则返回?True
?,否则返回?False
?。
math.isqrt(n)
返回非负整数?n?的整数平方根。 这就是对?n?的实际平方根向下取整,或者相当于使得?a2?≤?n?的最大整数?a。
对于某些应用来说,可以更适合取值为使得?n?≤?a2 的最小整数?a?,或者换句话说就是?n?的实际平方根向上取整。 对于正数?n,这可以使用?a?=?1?+?isqrt(n?-?1)
?来计算。
3.8 新版功能.
math.lcm(*integers)
返回给定的整数参数的最小公倍数。 如果所有参数均非零,则返回值将是为所有参数的整数倍的最小正整数。 如果参数之一为零,则返回值为?0
。 不带参数的?lcm()
?返回?1
。
3.9 新版功能.
math.ldexp(x,?i)
返回?x?*?(2**i)
?。 这基本上是函数?frexp()?的反函数。
math.modf(x)
返回?x?的小数和整数部分。两个结果都带有?x?的符号并且是浮点数。
math.nextafter(x,?y,?steps=1)
返回从?x?到?y?的步数的浮点值?steps。
如果?x?等于?y,则返回?y,除非?steps?值为零。
示例:
-
math.nextafter(x,?math.inf)
?的方向朝上:趋向于正无穷。 -
math.nextafter(x,?-math.inf)
?的方向朝下:趋向于负无穷。 -
math.nextafter(x,?0.0)
?趋向于零。 -
math.nextafter(x,?math.copysign(math.inf,?x))
?趋向于零的反方向。
另请参阅?math.ulp()。
在 3.12 版更改:?增加了?steps?参数。
3.9 新版功能.
math.perm(n,?k=None)
返回不重复且有顺序地从?n?项中选择?k?项的方式总数。
当?k?<=?n
?时取值为?n!?/?(n?-?k)!
;当?k?>?n
?时取值为零。
如果?k?未指定或为 None,则?k?默认值为?n?并且函数将返回?n!
。
如果任一参数不为整数则会引发?TypeError。 如果任一参数为负数则会引发?ValueError。
3.8 新版功能.
math.prod(iterable,?*,?start=1)
计算输入的?iterable?中所有元素的积。 积的默认?start?值为?1
。
当可迭代对象为空时,返回起始值。 此函数特别针对数字值使用,并会拒绝非数字类型。
3.8 新版功能.
math.remainder(x,?y)
返回 IEEE 754 风格的?x?相对于?y?的余数。对于有限?x?和有限非零?y?,这是差异?x?-?n*y
?,其中?n
?是与商?x?/?y
?的精确值最接近的整数。如果?x?/?y
?恰好位于两个连续整数之间,则将最接近的?偶数?用作?n
?。 余数?r?=?remainder(x,?y)
?因此总是满足?abs(r)?<=?0.5?*?abs(y)
。
特殊情况遵循IEEE 754:特别是?remainder(x,?math.inf)
?对于任何有限?x?都是?x?,而?remainder(x,?0)
?和?remainder(math.inf,?x)
?引发?ValueError?适用于任何非NaN的?x?。如果余数运算的结果为零,则该零将具有与?x?相同的符号。
在使用IEEE 754二进制浮点的平台上,此操作的结果始终可以完全表示:不会引入舍入错误。
3.7 新版功能.
math.sumprod(p,?q)
两个可迭代对象?p?和?q?中的值的乘积的总计值。
如果输入值的长度不相等则会引发?ValueError。
大致相当于:
sum(itertools.starmap(operator.mul, zip(p, q, strict=True)))
对于浮点数或混合整数/浮点数的输入,中间的乘积和总计值将使用扩展精度来计算。
3.12 新版功能.
math.trunc(x)
返回去除小数部分的?x?,只留下整数部分。 这样就可以四舍五入到0了:?trunc()
?对于正的?x?相当于?floor()?,对于负的?x?相当于?ceil()?。如果?x?不是浮点数,委托给?x.__trunc__?,它应该返回一个?Integral?值。
math.ulp(x)
返回浮点数?x?的最小有效比特位的值:
-
如果?x?是 NaN (非数字),则返回?x。
-
如果?x?为负数,则返回?
ulp(-x)
。 -
如果?x?为正数,则返回?x。
-
如果?x?等于零,则返回?去正规化的?可表示最小正浮点数 (小于?正规化的?最小正浮点数?sys.float_info.min)。
-
如果?x?等于可表示最大正浮点数,则返回?x?的最低有效比特位的值,使得小于?x?的第一个浮点数为?
x?-?ulp(x)
。 -
在其他情况下 (x?是一个有限的正数),则返回?x?的最低有效比特位的值,使得大于?x?的第一个浮点数为?
x?+?ulp(x)
。
ULP 即 "Unit in the Last Place" 的缩写。
另请参阅?math.nextafter()?和?sys.float_info.epsilon。
3.9 新版功能.
注意?frexp()?和?modf()?具有与它们的C等价函数不同的调用/返回模式:它们采用单个参数并返回一对值,而不是通过 '输出形参' 返回它们的第二个返回参数(Python中没有这样的东西)。
对于?ceil()?,?floor()?和?modf()?函数,请注意?所有?足够大的浮点数都是精确整数。Python浮点数通常不超过53位的精度(与平台C double类型相同),在这种情况下,任何浮点?x?与?abs(x)?>=?2**52
?必然没有小数位。
幂函数与对数函数
math.cbrt(x)
返回?x?的立方根。
3.11 新版功能.
math.exp(x)
返回?e?的?x?次幂,其中?e?= 2.718281... 是自然对数的基数。这通常比?math.e?**?x
?或?pow(math.e,?x)
?更精确。
math.exp2(x)
返回?2?的?x?次幂。
3.11 新版功能.
math.expm1(x)
返回?e?的?x,减去 1。 这里?e?是以自然对数作为基数。 对于小浮点数?x,在?exp(x)?-?1
?中的减法运算可能导致?明显的精度损失;?expm1()?函数提供了一种以完整精度计算此数量的办法:
>>>
>>> from math import exp, expm1 >>> exp(1e-5) - 1 # gives result accurate to 11 places 1.0000050000069649e-05 >>> expm1(1e-5) # result accurate to full precision 1.0000050000166668e-05
3.2 新版功能.
math.log(x[,?base])
使用一个参数,返回?x?的自然对数(底为?e?)。
使用两个参数,返回给定的?base?的对数?x?,计算为?log(x)/log(base)
?。
math.log1p(x)
返回?1+x?的自然对数(以?e?为底)。 以对于接近零的?x?精确的方式计算结果。
math.log2(x)
返回?x?以2为底的对数。这通常比?log(x,?2)
?更准确。
3.3 新版功能.
参见
int.bit_length()?返回表示二进制整数所需的位数,不包括符号和前导零。
math.log10(x)
返回?x?底为10的对数。这通常比?log(x,?10)
?更准确。
math.pow(x,?y)
返回?x
?的?y
?次幂。 特殊情况将尽可能遵循 IEEE 754 标准。 特别地,pow(1.0,?x)
?和?pow(x,?0.0)
?总是返回?1.0
,即使当?x
?为零或 NaN 也是如此。 如果?x
?和?y
?均为有限值,x
?为负数,而?y
?不是整数则?pow(x,?y)
?是未定义的,并将引发?ValueError。
与内置的?**
?运算符不同,?math.pow()?将其参数转换为?float?类型。使用?**
?或内置的?pow()?函数来计算精确的整数幂。
在 3.11 版更改:?特殊情况?pow(0.0,?-inf)
?和?pow(-0.0,?-inf)
?已改为返回?inf
?而不是引发?ValueError,以便同 IEEE 754 保持一致。
math.sqrt(x)
返回?x?的平方根。
三角函数
math.acos(x)
返回以弧度为单位的?x?的反余弦值。 结果范围在?0
?到?pi
?之间。
math.asin(x)
返回以弧度为单位的?x?的反正弦值。 结果范围在?-pi/2
?到?pi/2
?之间。
math.atan(x)
返回以弧度为单位的?x?的反正切值。 结果范围在?-pi/2
?到?pi/2
?之间。.
math.atan2(y,?x)
以弧度为单位返回?atan(y?/?x)
?。结果是在?-pi
?和?pi
?之间。从原点到点?(x,?y)
?的平面矢量使该角度与正X轴成正比。?atan2()?的点的两个输入的符号都是已知的,因此它可以计算角度的正确象限。 例如,?atan(1)
?和?atan2(1,?1)
?都是?pi/4
?,但?atan2(-1,?-1)
?是?-3*pi/4
?。
math.cos(x)
返回?x?弧度的余弦值。
math.dist(p,?q)
返回?p?与?q?两点之间的欧几里得距离,以一个坐标序列(或可迭代对象)的形式给出。 两个点必须具有相同的维度。
大致相当于:
sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q)))
3.8 新版功能.
math.hypot(*coordinates)
返回欧几里得范数,sqrt(sum(x**2?for?x?in?coordinates))
。 这是从原点到坐标给定点的向量长度。
对于一个二维点?(x,?y)
,这等价于使用毕达哥拉斯定义?sqrt(x*x?+?y*y)
?计算一个直角三角形的斜边。
在 3.8 版更改:?添加了对 n 维点的支持。 之前的版本只支持二维点。
在 3.10 版更改:?改进了算法的精确性,使得最大误差在 1 ulp (最后一位的单位数值) 以下。 更为常见的情况是,结果几乎总是能正确地舍入到 1/2 ulp 范围之内。
math.sin(x)
返回?x?弧度的正弦值。
math.tan(x)
返回?x?弧度的正切值。
角度转换
math.degrees(x)
将角度?x?从弧度转换为度数。
math.radians(x)
将角度?x?从度数转换为弧度。
双曲函数
双曲函数?是基于双曲线而非圆来对三解函数进行的模拟。
math.acosh(x)
返回?x?的反双曲余弦值。
math.asinh(x)
返回?x?的反双曲正弦值。
math.atanh(x)
返回?x?的反双曲正切值。
math.cosh(x)
返回?x?的双曲余弦值。
math.sinh(x)
返回?x?的双曲正弦值。
math.tanh(x)
返回?x?的双曲正切值。
特殊函数
math.erf(x)
返回?x?处的?误差函数?。
erf()?函数可用来计算传统的统计函数如?累计标准正态分布:
def phi(x): 'Cumulative distribution function for the standard normal distribution' return (1.0 + erf(x / sqrt(2.0))) / 2.0
3.2 新版功能.
math.erfc(x)
返回?x?处的互补误差函数。?互补错误函数?定义为?1.0?-?erf(x)
。 它用于?x?的大值,从其中减去一个会导致?有效位数损失。
3.2 新版功能.
math.gamma(x)
返回?x?处的?伽马函数?值。
3.2 新版功能.
math.lgamma(x)
返回Gamma函数在?x?绝对值的自然对数。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!