zoukankan      html  css  js  c++  java
  • python-math模块

    math数论与表示函数

    l math.ceil(x)

    返回 x 的上限,即大于或者等于 的最小整数。如果 不是一个浮点数,则委托 x.__ceil__(), 返回一个 Integral 类的值。

    l math.comb(n, k)

    返回不重复且无顺序地从 n 项中选择 项的方式总数。

     k <= n 时取值为 n! / (k! * (n - k)!);当 k > n 时取值为零。

    也称为二项式系数,因为它等价于表达式 (1 + x) ** n 的多项式展开中第 项的系数。

    如果任一参数不为整数则会引发 TypeError。 如果任一参数为负数则会引发 ValueError

    l math.copysign(x, y)

    返回一个基于 x 的绝对值和 的符号的浮点数。在支持带符号零的平台上,copysign(1.0, -0.0) 返回 -1.0.

    l math.fabs(x)

    返回 x 的绝对值。

    l math.factorial(x)

    以一个整数返回 x 的阶乘。 如果 不是整数或为负数时则将引发 ValueError

    l math.floor(x)

    返回 x 的向下取整,小于或等于 的最大整数。如果 不是浮点数,则委托 x.__floor__() ,它应返回 Integral 值。

    l math.fmod(x, y)

    返回 fmod(x, y) ,由平台C库定义。请注意,Python表达式 x % y 可能不会返回相同的结果。C标准的目的是 fmod(x, y) 完全(数学上;到无限精度)等于 x - n*y 对于某个整数 ,使得结果具有 与 相同的符号和小于 abs(y) 的幅度。Python的 x % y 返回带有 符号的结果,并且可能不能完全计算浮点参数。 例如, fmod(-1e-100, 1e100) 是 -1e-100 ,但Python的 -1e-100 % 1e100 的结果是 1e100-1e-100 ,它不能完全表示为浮点数,并且取整为令人惊讶的 1e100 。 出于这个原因,函数 fmod() 在使用浮点数时通常是首选,而Python的 x % y 在使用整数时是首选。

    l math.frexp(x)

    返回 x 的尾数和指数作为对``(m, e)``。 是一个浮点数, 是一个整数,正好是 x == m * 2**e 。 如果 为零,则返回 (0.0, 0) ,否则返回 0.5 <= abs(m) < 1 。这用于以可移植方式分离浮点数的内部表示。

    l math.fsum(iterable)

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

    >>>

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

    0.9999999999999999

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

    1.0

    该算法的准确性取决于IEEE-754算术保证和舍入模式为半偶的典型情况。在某些非Windows版本中,底层C库使用扩展精度添加,并且有时可能会使中间和加倍,导致它在最低有效位中关闭。

    l math.gcd(a, b)

    返回整数 a 和 的最大公约数。如果 或 之一非零,则 gcd(a, b) 的值是能同时整除 和 的最大正整数。gcd(0, 0) 返回 0

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

     a 和 的值比较接近则返回 True,否则返回 False

    根据给定的绝对和相对容差确定两个值是否被认为是接近的。

    rel_tol 是相对容差 —— 它是 和 之间允许的最大差值,相对于 或 的较大绝对值。例如,要设置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 只被认为接近自己。

    l math.isfinite(x)

    如果 x 既不是无穷大也不是NaN,则返回 True ,否则返回 False 。 (注意 0.0 被认为 是 有限的。)

    l math.isinf(x)

    如果 x 是正或负无穷大,则返回 True ,否则返回 False 

    l math.isnan(x)

    如果 x 是 NaN(不是数字),则返回 True ,否则返回 False 

    l math.isqrt(n)

    返回非负整数 n 的整数平方根。 这就是对 的实际平方根向下取整,或者相当于使得 a² ≤ n 的最大整数 a

    对于某些应用来说,可以更适合取值为使得 n ≤ a² 的最小整数 ,或者换句话说就是 的实际平方根向上取整。 对于正数 n,这可以使用 a = 1 + isqrt(n - 1) 来计算。

    l math.ldexp(x, i)

    返回 x * (2**i) 。 这基本上是函数 frexp() 的反函数。

    l math.modf(x)

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

    l math.perm(n, k=None)

    返回不重复且无顺序地从 n 项中选择 项的方式总数。

     k <= n 时取值为 n! / (n - k)!;当 k > n 时取值为零。

    如果 k 未指定或为 None,则 默认值为 并且函数将返回 n!

    如果任一参数不为整数则会引发 TypeError。 如果任一参数为负数则会引发 ValueError

    l math.prod(iterable, *, start=1)

    计算输入的 iterable 中所有元素的积。 积的默认 start 值为 1

    当可迭代对象为空时,返回起始值。 此函数特别针对数字值使用,并会拒绝非数字类型。

    l math.remainder(x, y)

    返回 IEEE 754 风格的 相对于 的余数。对于有限 和有限非零 ,这是差异 x - n*y ,其中 是与商 x / y 的精确值最接近的整数。如果 x / y 恰好位于两个连续整数之间,则最近的 * even* 整数用于 。 余数 r = remainder(x, y) 因此总是满足 abs(r) <= 0.5 * abs(y) 

    特殊情况遵循IEEE 754:特别是 remainder(x, math.inf) 对于任何有限 都是 ,而 remainder(x, 0) 和 remainder(math.inf, x) 引发 ValueError 适用于任何非NaN的 。如果余数运算的结果为零,则该零将具有与 相同的符号。

    在使用IEEE 754二进制浮点的平台上,此操作的结果始终可以完全表示:不会引入舍入错误。

    l math.trunc(x)

    返回 Real 值 截断为 Integral (通常是整数)。 委托给 x.__trunc__()

    注意 frexp() 和 modf() 具有与它们的C等价函数不同的调用/返回模式:它们采用单个参数并返回一对值,而不是通过 '输出形参返回它们的第二个返回参数(Python中没有这样的东西)。

    对于 ceil() , floor() 和 modf() 函数,请注意 所有 足够大的浮点数都是精确整数。Python浮点数通常不超过53位的精度(与平台C double类型相同),在这种情况下,任何浮点 与 abs(x) >= 2**52 必然没有小数位。

    幂函数与对数函数

    l math.exp(x)

    返回 e 次 幂,其中 e = 2.718281... 是自然对数的基数。这通常比 math.e ** x 或 pow(math.e, x) 更精确。

    l math.expm1(x)

    返回 e 的 次幂,减1。这里 是自然对数的基数。对于小浮点数 , exp(x) - 1 中的减法可能导致 significant loss of precision; 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

    l math.log(x[, base])

    使用一个参数,返回 x 的自然对数(底为 )。

    使用两个参数,返回给定的 base 的对数 ,计算为 log(x)/log(base) 

    l math.log1p(x)

    返回 1+x (base e) 的自然对数。以对于接近零的 精确的方式计算结果。

    l math.log2(x)

    返回 x 2为底的对数。这通常比 log(x, 2) 更准确。

    l math.log10(x)

    返回 x 底为10的对数。这通常比 log(x, 10) 更准确。

    l math.pow(x, y)

    将返回 x 的 次幂。特殊情况尽可能遵循C99标准的附录'F'。特别是, pow(1.0, x) 和 pow(x, 0.0) 总是返回 1.0 ,即使 是零或NaN。 如果 和 都是有限的, 是负数, 不是整数那么 pow(x, y) 是未定义的,并且引发 ValueError 

    与内置的 ** 运算符不同, math.pow() 将其参数转换为 float 类型。使用 ** 或内置的 pow() 函数来计算精确的整数幂。

    l math.sqrt(x)

    返回 x 的平方根。

    三角函数

    l math.acos(x)

    以弧度为单位返回 x 的反余弦值。

    l math.asin(x)

    以弧度为单位返回 x 的反正弦值。

    l math.atan(x)

    以弧度为单位返回 x 的反正切值。

    l 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 

    l math.cos(x)

    返回 x 弧度的余弦值。

    l math.dist(p, q)

    返回 p 与 两点之间的欧几里得距离,以一个坐标序列(或可迭代对象)的形式给出。 两个点必须具有相同的维度。

    大致相当于:

    sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q)))

    math.hypot(*coordinates)

    返回欧几里得范数,sqrt(sum(x**2 for x in coordinates))。 这是从原点到坐标给定点的向量长度。

    对于一个二维点 (x, y),这等价于使用毕达哥拉斯定义 sqrt(x*x + y*y) 计算一个直角三角形的斜边。

    l math.sin(x)

    返回 x 弧度的正弦值。

    l math.tan(x)

    返回 x 弧度的正切值。

    角度转换

    l math.degrees(x)

    将角度 x 从弧度转换为度数。

    l math.radians(x)

    将角度 x 从度数转换为弧度。

    双曲函数

    双曲函数 是基于双曲线而非圆来对三角函数进行模拟。

    l math.acosh(x)

    返回 x 的反双曲余弦值。

    l math.asinh(x)

    返回 x 的反双曲正弦值。

    l math.atanh(x)

    返回 x 的反双曲正切值。

    l math.cosh(x)

    返回 x 的双曲余弦值。

    l math.sinh(x)

    返回 x 的双曲正弦值。

    l math.tanh(x)

    返回 x 的双曲正切值。

    特殊函数

    l math.erf(x)

    返回 x 处的 error function 

    erf() 函数可用于计算传统的统计函数,如 累积标准正态分布

    def phi(x):

        'Cumulative distribution function for the standard normal distribution'

        return (1.0 + erf(x / sqrt(2.0))) / 2.0

    l math.erfc(x)

    返回 x 处的互补误差函数。 互补错误函数 定义为 1.0 - erf(x)。 它用于 的大值,从其中减去一个会导致 有效位数损失。

    l math.gamma(x)

    返回 x 处的 伽马函数 值。

    l math.lgamma(x)

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

    常量

    l math.pi

    数学常数 π = 3.141592...,精确到可用精度。

    l math.e

    数学常数 e = 2.718281...,精确到可用精度。

    l math.tau

    数学常数 τ = 6.283185...,精确到可用精度。Tau 是一个圆周常数,等于 ,圆的周长与半径之比。更多关于 Tau 的信息可参考 Vi Hart 的视频 Pi is (still) Wrong。吃两倍多的派来庆祝 Tau 日 吧!

    l math.inf

    浮点正无穷大。 (对于负无穷大,使用 -math.inf 。)相当于 float('inf') 的输出。

    l math.nan

    浮点非数字NaN)值。 相当于 float('nan') 的输出。

    math数论与表示函数

    l math.ceil(x)

    返回 x 的上限,即大于或者等于 的最小整数。如果 不是一个浮点数,则委托 x.__ceil__(), 返回一个 Integral 类的值。

    l math.comb(n, k)

    返回不重复且无顺序地从 n 项中选择 项的方式总数。

     k <= n 时取值为 n! / (k! * (n - k)!);当 k > n 时取值为零。

    也称为二项式系数,因为它等价于表达式 (1 + x) ** n 的多项式展开中第 项的系数。

    如果任一参数不为整数则会引发 TypeError。 如果任一参数为负数则会引发 ValueError

    l math.copysign(x, y)

    返回一个基于 x 的绝对值和 的符号的浮点数。在支持带符号零的平台上,copysign(1.0, -0.0) 返回 -1.0.

    l math.fabs(x)

    返回 x 的绝对值。

    l math.factorial(x)

    以一个整数返回 x 的阶乘。 如果 不是整数或为负数时则将引发 ValueError

    l math.floor(x)

    返回 x 的向下取整,小于或等于 的最大整数。如果 不是浮点数,则委托 x.__floor__() ,它应返回 Integral 值。

    l math.fmod(x, y)

    返回 fmod(x, y) ,由平台C库定义。请注意,Python表达式 x % y 可能不会返回相同的结果。C标准的目的是 fmod(x, y) 完全(数学上;到无限精度)等于 x - n*y 对于某个整数 ,使得结果具有 与 相同的符号和小于 abs(y) 的幅度。Python的 x % y 返回带有 符号的结果,并且可能不能完全计算浮点参数。 例如, fmod(-1e-100, 1e100) 是 -1e-100 ,但Python的 -1e-100 % 1e100 的结果是 1e100-1e-100 ,它不能完全表示为浮点数,并且取整为令人惊讶的 1e100 。 出于这个原因,函数 fmod() 在使用浮点数时通常是首选,而Python的 x % y 在使用整数时是首选。

    l math.frexp(x)

    返回 x 的尾数和指数作为对``(m, e)``。 是一个浮点数, 是一个整数,正好是 x == m * 2**e 。 如果 为零,则返回 (0.0, 0) ,否则返回 0.5 <= abs(m) < 1 。这用于以可移植方式分离浮点数的内部表示。

    l math.fsum(iterable)

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

    >>>

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

    0.9999999999999999

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

    1.0

    该算法的准确性取决于IEEE-754算术保证和舍入模式为半偶的典型情况。在某些非Windows版本中,底层C库使用扩展精度添加,并且有时可能会使中间和加倍,导致它在最低有效位中关闭。

    l math.gcd(a, b)

    返回整数 a 和 的最大公约数。如果 或 之一非零,则 gcd(a, b) 的值是能同时整除 和 的最大正整数。gcd(0, 0) 返回 0

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

     a 和 的值比较接近则返回 True,否则返回 False

    根据给定的绝对和相对容差确定两个值是否被认为是接近的。

    rel_tol 是相对容差 —— 它是 和 之间允许的最大差值,相对于 或 的较大绝对值。例如,要设置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 只被认为接近自己。

    l math.isfinite(x)

    如果 x 既不是无穷大也不是NaN,则返回 True ,否则返回 False 。 (注意 0.0 被认为 是 有限的。)

    l math.isinf(x)

    如果 x 是正或负无穷大,则返回 True ,否则返回 False 

    l math.isnan(x)

    如果 x 是 NaN(不是数字),则返回 True ,否则返回 False 

    l math.isqrt(n)

    返回非负整数 n 的整数平方根。 这就是对 的实际平方根向下取整,或者相当于使得 a² ≤ n 的最大整数 a

    对于某些应用来说,可以更适合取值为使得 n ≤ a² 的最小整数 ,或者换句话说就是 的实际平方根向上取整。 对于正数 n,这可以使用 a = 1 + isqrt(n - 1) 来计算。

    l math.ldexp(x, i)

    返回 x * (2**i) 。 这基本上是函数 frexp() 的反函数。

    l math.modf(x)

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

    l math.perm(n, k=None)

    返回不重复且无顺序地从 n 项中选择 项的方式总数。

     k <= n 时取值为 n! / (n - k)!;当 k > n 时取值为零。

    如果 k 未指定或为 None,则 默认值为 并且函数将返回 n!

    如果任一参数不为整数则会引发 TypeError。 如果任一参数为负数则会引发 ValueError

    l math.prod(iterable, *, start=1)

    计算输入的 iterable 中所有元素的积。 积的默认 start 值为 1

    当可迭代对象为空时,返回起始值。 此函数特别针对数字值使用,并会拒绝非数字类型。

    l math.remainder(x, y)

    返回 IEEE 754 风格的 相对于 的余数。对于有限 和有限非零 ,这是差异 x - n*y ,其中 是与商 x / y 的精确值最接近的整数。如果 x / y 恰好位于两个连续整数之间,则最近的 * even* 整数用于 。 余数 r = remainder(x, y) 因此总是满足 abs(r) <= 0.5 * abs(y) 

    特殊情况遵循IEEE 754:特别是 remainder(x, math.inf) 对于任何有限 都是 ,而 remainder(x, 0) 和 remainder(math.inf, x) 引发 ValueError 适用于任何非NaN的 。如果余数运算的结果为零,则该零将具有与 相同的符号。

    在使用IEEE 754二进制浮点的平台上,此操作的结果始终可以完全表示:不会引入舍入错误。

    l math.trunc(x)

    返回 Real 值 截断为 Integral (通常是整数)。 委托给 x.__trunc__()

    注意 frexp() 和 modf() 具有与它们的C等价函数不同的调用/返回模式:它们采用单个参数并返回一对值,而不是通过 '输出形参返回它们的第二个返回参数(Python中没有这样的东西)。

    对于 ceil() , floor() 和 modf() 函数,请注意 所有 足够大的浮点数都是精确整数。Python浮点数通常不超过53位的精度(与平台C double类型相同),在这种情况下,任何浮点 与 abs(x) >= 2**52 必然没有小数位。

    幂函数与对数函数

    l math.exp(x)

    返回 e 次 幂,其中 e = 2.718281... 是自然对数的基数。这通常比 math.e ** x 或 pow(math.e, x) 更精确。

    l math.expm1(x)

    返回 e 的 次幂,减1。这里 是自然对数的基数。对于小浮点数 , exp(x) - 1 中的减法可能导致 significant loss of precision; 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

    l math.log(x[, base])

    使用一个参数,返回 x 的自然对数(底为 )。

    使用两个参数,返回给定的 base 的对数 ,计算为 log(x)/log(base) 

    l math.log1p(x)

    返回 1+x (base e) 的自然对数。以对于接近零的 精确的方式计算结果。

    l math.log2(x)

    返回 x 2为底的对数。这通常比 log(x, 2) 更准确。

    l math.log10(x)

    返回 x 底为10的对数。这通常比 log(x, 10) 更准确。

    l math.pow(x, y)

    将返回 x 的 次幂。特殊情况尽可能遵循C99标准的附录'F'。特别是, pow(1.0, x) 和 pow(x, 0.0) 总是返回 1.0 ,即使 是零或NaN。 如果 和 都是有限的, 是负数, 不是整数那么 pow(x, y) 是未定义的,并且引发 ValueError 

    与内置的 ** 运算符不同, math.pow() 将其参数转换为 float 类型。使用 ** 或内置的 pow() 函数来计算精确的整数幂。

    l math.sqrt(x)

    返回 x 的平方根。

    三角函数

    l math.acos(x)

    以弧度为单位返回 x 的反余弦值。

    l math.asin(x)

    以弧度为单位返回 x 的反正弦值。

    l math.atan(x)

    以弧度为单位返回 x 的反正切值。

    l 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 

    l math.cos(x)

    返回 x 弧度的余弦值。

    l math.dist(p, q)

    返回 p 与 两点之间的欧几里得距离,以一个坐标序列(或可迭代对象)的形式给出。 两个点必须具有相同的维度。

    大致相当于:

    sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q)))

    math.hypot(*coordinates)

    返回欧几里得范数,sqrt(sum(x**2 for x in coordinates))。 这是从原点到坐标给定点的向量长度。

    对于一个二维点 (x, y),这等价于使用毕达哥拉斯定义 sqrt(x*x + y*y) 计算一个直角三角形的斜边。

    l math.sin(x)

    返回 x 弧度的正弦值。

    l math.tan(x)

    返回 x 弧度的正切值。

    角度转换

    l math.degrees(x)

    将角度 x 从弧度转换为度数。

    l math.radians(x)

    将角度 x 从度数转换为弧度。

    双曲函数

    双曲函数 是基于双曲线而非圆来对三角函数进行模拟。

    l math.acosh(x)

    返回 x 的反双曲余弦值。

    l math.asinh(x)

    返回 x 的反双曲正弦值。

    l math.atanh(x)

    返回 x 的反双曲正切值。

    l math.cosh(x)

    返回 x 的双曲余弦值。

    l math.sinh(x)

    返回 x 的双曲正弦值。

    l math.tanh(x)

    返回 x 的双曲正切值。

    特殊函数

    l math.erf(x)

    返回 x 处的 error function 

    erf() 函数可用于计算传统的统计函数,如 累积标准正态分布

    def phi(x):

        'Cumulative distribution function for the standard normal distribution'

        return (1.0 + erf(x / sqrt(2.0))) / 2.0

    l math.erfc(x)

    返回 x 处的互补误差函数。 互补错误函数 定义为 1.0 - erf(x)。 它用于 的大值,从其中减去一个会导致 有效位数损失。

    l math.gamma(x)

    返回 x 处的 伽马函数 值。

    l math.lgamma(x)

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

    常量

    l math.pi

    数学常数 π = 3.141592...,精确到可用精度。

    l math.e

    数学常数 e = 2.718281...,精确到可用精度。

    l math.tau

    数学常数 τ = 6.283185...,精确到可用精度。Tau 是一个圆周常数,等于 ,圆的周长与半径之比。更多关于 Tau 的信息可参考 Vi Hart 的视频 Pi is (still) Wrong。吃两倍多的派来庆祝 Tau 日 吧!

    l math.inf

    浮点正无穷大。 (对于负无穷大,使用 -math.inf 。)相当于 float('inf') 的输出。

    l math.nan

    浮点非数字NaN)值。 相当于 float('nan') 的输出。

  • 相关阅读:
    leetcode python翻转字符串里的单词
    leetcode python快乐数
    Usb gadget驱动
    cnblogs的第一篇
    python返回函数+匿名函数+装饰器+偏函数
    1144. 递减元素使数组呈锯齿状
    208. Implement Trie (Prefix Tree)
    3. Longest Substring Without Repeating Characters
    5. Longest Palindromic Substring :manacher
    929. 独特的电子邮件地址
  • 原文地址:https://www.cnblogs.com/nuoyi/p/13037636.html
Copyright © 2011-2022 走看看