我的Python学习日记
Date | Log |
---|---|
2023.11.30 | 完成编写 |
5. 数学运算
5.1 数学函数
本节内容许多函数源于math模块,使用前需要先导入math模块import math
如果需要计算复数,则使用cmath模块中的同名函数
函数名 | 描述 |
---|---|
abs(x) | 绝对值 |
math.fabs(x) | 以浮点数形式返回绝对值,不可应用于复数 |
math.ceil(x) | 向上取整,返回一个大于或等于x的最小整数 |
math.floor(x) | 向下取整,返回一个小于或等于x的最大整数 |
math.exp(x) | 以e为底,以x为幂,生成 e x e^x ex 表达式 |
math.expm1(x) | 返回 e x − 1 e^x-1 ex−1,比其他方法结果更精确 |
math.log(x,base) | 返回以base为基,x的对数,base默认为 e e e,即自然对数 |
math.log10(x) | 返回以10为基数的x的对数 l o g 10 x log_{10}x log10x |
math.log2(x) | 返回以2为基数的x的对数 l o g 2 x log_{2}x log2x |
math.log1p(x) | 返回x+1的自然对数 l n ( x + 1 ) ln(x+1) ln(x+1) |
max(x,y,z…) min(x,y,z…) | 最大值 最小值 |
math.modf(x.y) | 返回x.y的小数部分y与整数部分x→(y,x) |
pow(x,y) pow(x,y,z) | 求x**y即xy 计算x**y % z即xy mod z |
round(x,n) | 返回x的五舍六入值, n可选,表示保留小数位数,默认为0 |
math.sqrt(x) | 返回数字x的平方根 |
math.comb(n,k) | 计算组合数 C n k C_n^k Cnk |
math.perm(n,k) | 计算排列数 A n k A_n^k Ank |
math.copysign(x,y) | 将y的符号赋给x |
math.dist(p,q) | 计算p与q之间的欧几里得距离, p、q均为元组或列表并尽可能保持类型一致 |
math.hypot( x 1 x_1 x1, x 2 x_2 x2…) | 计算输入值到原点的欧几里得距离,即欧几里得范数 x 1 2 + x 2 2 + . . . + x n 2 . . . \sqrt{x_1^2+x_2^2+...+x_n^2...} x12+x22+...+xn2... |
math.erf(x) math.erfc(x) | 返回数字x的误差函数值 返回数字x的互补误差函数 |
math.factorial(x) | 返回x的阶乘,x只能为正整数或0 |
math.fmod(x,y)[注1] | 返回x/y的余数即取余 |
math.fsum(seq) | 计算可迭代对象seq(列表、元组)中所有元素的和, 如果有非数字元素,会产生TypeError,返回值为浮点数 |
math.prod(seq,start) | 计算可迭代对象seq中所有元素的乘积, 从start开始,可选,默认为1,返回值由输入值决定 |
math.gamma(x) | 返回x的伽马函数值 |
math.lgamma(x) | 返回x的自然对数伽马函数值 |
math.gcd(x,y,z…) | 返回两个或多个整数的最大公约数 |
math.isfinite(x) math.inf(x) math.isnan | 判断x是否有限,如果不是NaN或inf则返回True,否则返回False 判断x是否是正负无穷大,是则返回True,否则返回False 判断x是否为NaN(不是数字),是则返回True,否则返回False |
math.isqrt(x) | 返回x的平方根并向下取整 |
表注
-
fmod()
函数返回值为浮点数,而%
取余返回值取决于计算数的类型import math print(math.fmod(7,2), 7%2, 7.0%2) # 1.0 1 1.0
5.2 数学常量
常量 | 描述 |
---|---|
math.e | 欧拉数 e e e |
math.inf | 返回无穷大浮点数 |
math.nan | 返回一个浮点值NaN(not a number) |
math.pi | π \pi π |
math.tau | 圆周常数 τ = 2 π \tau=2\pi τ=2π |
5.3 三角函数
函数[注1] | 描述 |
---|---|
math.sin(x) | s i n x sinx sinx |
math.asin(x) | a r c s i n x arcsinx arcsinx |
math.cos(x) | c o s x cosx cosx |
math.acos(x) | a r c c o s x arccosx arccosx |
math.tan(x) | t a n x tanx tanx |
math.atan(x) | a r c t a n x arctanx arctanx |
math.sinh(x) | x的双曲正弦函数 |
math.asinh(x) | x的反双曲正弦函数 |
math.cosh(x) | x的双曲余弦函数 |
math.acosh(x) | x的反双曲余弦函数 |
math.tanh(x) | x的双曲正切函数 |
math.atanh(x) | x的反双曲正切函数 |
math.degrees(x) | 将x从弧度转换为角度 |
math.radians(x) | 将x从角度转换为弧度 |
表注
- 三角函数参数为弧度而非角度
5.4 随机数
本节需要先导入random模块import random
函数 | 描述 |
---|---|
random.seed(x) | 初始化随机数生成器种子,一般为默认不必特别设定 如果设定种子,那么使用 random() 生成的随机数为同一个 |
random.randrange(start,stop,step) | 在start(一个整数,可选,默认为0)到stop(一个整数,必需) 指定步长step(一个整数,可选,默认为1)随机生成一个数 |
random.randint(a,b) | 返回一个在 [ a , b ] [a,b] [a,b]区间的整数,a,b均为整数 |
random.choice(seq) | 从seq中随机返回一个元素,seq可以是列表、元组或字符串 |
random.shuffle(list) | 将列表中元素随机打乱,返回值为None,输入参数为列表 |
random.random() | 返回在 [ 0 , 1 ) [0,1) [0,1)之间随机生成的一个实数 |
random.uniform(a,b) | 返回一个在 [ a , b ] [a,b] [a,b]区间的浮点数,a,b均为整数且大小关系不定 |
特别的,一些分布
分布 | 描述 |
---|---|
random.triangular(low, high, mode) | 生成一个服从三角分布的随机浮点数 low,high分别为下限和上限,mode为峰值或众数 |
random.betavariate( α \alpha α, β \beta β) | 生成一个服从 Beta 分布的随机浮点数 |
random.expovariate( λ \lambda λ) | 生成一个服从参数为 λ \lambda λ的指数分布的随机浮点数 |
random.gammavariate( α \alpha α, β \beta β) | 生成一个服从形状尺度 α \alpha α,尺度参数 β \beta β的伽马分布的随机浮点数 |
random.guass(
μ
\mu
μ,
σ
\sigma
σ) random.normalvariate( μ \mu μ, σ \sigma σ) | 生成一个服从参数为 μ \mu μ, σ \sigma σ的高斯分布的随机浮点数, σ \sigma σ为标准差 |