NMT Data Mining & Big Data

math模块的函数介绍

2019-03-17
NMt

这一篇主要讲解math模块里面的所有函数。

@@@@

math模块中的固定常数

标记 具体数值 说明
math.e 2.718281828459045 自然常数
math.pi 3.141592653589793 圆周率
math.inf - 无穷大
math.nan - not a number(不是一个数值)
math.tau 6.283185307179586 圆周率的两倍

取整函数

  • math.ceil(x) 向上取整
>>> math.ceil(1.2)
2
  • math.floor(x) 向下取整
>>> math.floor(1.2)
1

注:四舍五入是用python内置函数round()

各种函数

  • math.pow(x, y) x的y次方
>>> math.pow(2, 3)
8.0
  • math.log(x[, base]) 计算x的对数,base为底数,默认为e
>>> math.log(math.e)
1.0
>>> math.log(100, 10)
2.0
  • math.log2(x) 比log(x, 2)更准确
>>> math.log2(8)
3.0
  • math.log10(x) 比log(x, 10)更准确
>>> math.log10(100)
2.0
  • math.log1p() 相当于log(x+1)
>>> math.log1p(math.e-1)
1.0
  • math.sqrt(x) 计算x的平方根
>>> math.sqrt(4)
2.0
  • math.hypot(x, y) 返回欧几里得范数,与(0,0)之间的距离
>>> math.hypot(3, 4)
5.0
  • math.exp(x) 计算e的x次方
>>> math.exp(math.log(1))
1.0
  • math.expm1(x) 相当于math.exp(x)-1
>>> math.expm1(math.log(1))
0.0
  • math.fabs(x) 返回x的绝对值
>>> math.fabs(-2)
2.0

注:相当于abs(x),推荐使用内置函数abs()

  • math.copysign(x, y) 返回一个浮点数,其大小(绝对值)为x,但符号为y。
>>> math.copysign(1.0, -0.0)
-1.0
  • math.factorial(x) 返回x的阶乘。如果x不是整数或是负数,则引发ValueError
>>> math.factorial(5)
120
>>> math.factorial(-5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: factorial() not defined for negative values
  • math.fmod(x, y) 返回x/y的余数,相当于x%y
>>> math.fmod(9, 2)
1.0
  • math.frexp(x) 返回一个元组(m, n),满足x = m * 2 ** (n)
>>> math.frexp(5)
(0.625, 3)
  • math.ldexp(x, i) 返回x * (2 ** i),是frexp()函数的反函数
>>> math.ldexp(0.625, 3)
5.0
  • math.fsum(iterable) 返回迭代中的精确浮点值。通过跟踪多个中间部分来避免精度损失
>>> 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.0
  • math.gcd(a, b) 返回整数a和b的最大公约数。如果a或b非零,那么值是最大的正整数。
>>> math.gcd(54, 72)
18
  • math.modf(x) 返回x的小数部分和整数部分
>>> math.modf(1.2)
(0.19999999999999996, 1.0)
  • math.remainder(x, y) r = remainder(x, y) 满足 abs(r) <= 0.5 * abs(y)

由于自己电脑上安装的是3.6.5版本的python,所以无法演示。

注:3.7的新功能

  • math.trunc(x) 返回x的整数部分
>>> math.trunc(math.pi)
3

判断型函数(返回bool类型)

  • math.isclose(a, b, *, rel_tol =1e-09, abs_tol = 0.0) a,b的值接近则返回True,否则返回False。

rel_tol是相对容差,它是a和b之间允许的最大差值,默认为1e-09,必须大于零。5%的容差写为rel_tol=0.05。

abs_tol最小绝对容差,对于接近零的比较有用,abs_tol至少为零。

>>> math.isclose(1.0, 1.00001)
False
>>> math.isclose(1.0, 1.0000000001)
True
  • math.isfinite(x) 如果x既不是无穷大也不是nan, 则返回True
>>> math.isfinite(math.inf)
False
>>> math.isfinite(math.nan)
False
>>> math.isfinite(False)
True
>>> math.isfinite(0.0)
True

注:0.0被认为是有限的。

  • math.isinf(x) 如果x是为无穷大则返回True,其他返回False。
>>> math.isinf(math.inf)
True
>>> math.isinf(-math.inf)
True
  • math.isnan(x) 如果x为NaN则返回True,否则返回False。
>>> math.isnan(math.nan)
True
>>> math.isnan(math.inf)
False

三角函数以及相关的函数

函数 说明
math.sin(x) 求x的正弦
math.cos(x) 求x的余弦
math.tan(x) 求x的正切
math.asin(x) 求x的反正弦
math.acos(x) 求x的反余弦
math.atan(x) 求x的反正切
math.atan2(y, x) 返回y/x的反正切

注:参数以弧度为单位(radian)

双曲函数

函数 说明
math.sinh(x) 求x的双曲正弦
math.cosh(x) 求x的双曲余弦
math.tanh(x) 求x的双曲正切
math.asinh(x) 求x的反双曲正弦
math.acosh(x) 求x的反双曲余弦
math.atanh(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)

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

>>> math.gamma(3)
2.0
  • math.lgamma(x) 返回Gamma函数的绝对值的自然对数,相当于log(math.gamma(x))
>>> math.exp(math.lgamma(3))
1.9999999999999993  #不是2目测是因为误差原因

角度与弧度转换

  • math.degrees(x) 将x从弧度转成角度
>>> math.degrees(2*math.pi)
360.0
  • math.radians(x) 将x从角度转换成弧度
>>> math.radians(360)
6.283185307179586   #相当于2*pi

注:版本3.2中的新功能

转载请注明:南梦婷的博客 » 点击阅读原文


Similar Posts

Comments