numbers:数字抽象基类
numbers模块是Python标准库中的一个模块,用于定义和操作数字类型的抽象基类。它提供了对各种数值类型(如整数、浮点数、复数等)的抽象定义,使得你可以编写与数字类型相关的代码而无需考虑具体的数字实现细节。
numbers.Number
Number是所有数字类型的抽象基类。它是所有具体数字类型(如整数、浮点数、复数等)的父类。
示例:
from numbers import Number print(issubclass(int, Number)) # 输出: True print(issubclass(float, Number)) # 输出: True print(issubclass(complex, Number)) # 输出: True
numbers.Integral
Integral是表示整数的抽象基类。它继承自Number类,表示所有的整数类型。
示例:
from numbers import Integral print(issubclass(int, Integral)) # 输出: True print(issubclass(float, Integral)) # 输出: False
numbers.Real
Real是表示所有实数(包括整数和浮点数)的抽象基类。它继承自Number类,并且是Integral和Fraction的基类。
示例:
from numbers import Real print(issubclass(int, Real)) # 输出: True print(issubclass(float, Real)) # 输出: True print(issubclass(complex, Real)) # 输出: False
numbers.Fraction
Fraction是表示分数的抽象基类。它继承自Real类,表示所有分数类型。Python的fractions.Fraction类是这个基类的一个具体实现。
示例:
from numbers import Fraction print(issubclass(Fraction, Real)) # 输出: True
numbers.Complex
Complex是表示复数的抽象基类。它继承自Number类,表示所有复数类型。Python的内置complex类型是这个基类的具体实现。
示例:
from numbers import Complex print(issubclass(complex, Complex)) # 输出: True print(issubclass(int, Complex)) # 输出: False
实现自定义数字类型
如果你需要实现一个自定义的数字类型,你可以继承numbers.Number及其子类,并实现相应的方法。例如,下面的代码定义了一个自定义的数字类型MyNumber,并实现了一些基本的操作。
from numbers import Number class MyNumber(Number): def __init__(self, value): self._value = value def __float__(self): return float(self._value) def __int__(self): return int(self._value) def __repr__(self): return f"MyNumber({self._value})" # 使用自定义数字类型 n = MyNumber(10) print(float(n)) # 输出: 10.0 print(int(n)) # 输出: 10
decimal:十进制浮点运算
decimal模块是Python标准库中的一个模块,提供了对浮点数进行精确计算的功能。它特别适用于需要高精度和准确度的场景,例如金融计算和科学计算。decimal模块支持任意精度的十进制浮点数,避免了二进制浮点数运算中的舍入误差。
decimal模块主要功能是提供高精度的十进制浮点数运算。其主要特性包括:
- 高精度运算:支持任意精度的十进制数。
- 精确控制:提供对舍入行为的精确控制。
- 十进制表示:避免了二进制浮点数表示中的精度丢失问题。
decimal.Decimal类
Decimal是decimal模块中的核心类,用于表示十进制浮点数。它支持高精度的数学运算。
基本用法
from decimal import Decimal # 创建Decimal对象 d1 = Decimal('0.1') d2 = Decimal('0.2') # 运算 result = d1 + d2 print(result) # 输出: 0.3
构造方法
Decimal(value):从整数、浮点数、字符串或其他Decimal对象创建Decimal对象。
示例:
from decimal import Decimal # 从整数 d1 = Decimal(10) # Decimal('10') # 从浮点数 d2 = Decimal(0.1) # Decimal('0.1000000000000000055511151231257827021181583404541015625') # 从字符串 d3 = Decimal('0.1') # Decimal('0.1')
舍入和精度
- getcontext():获取当前的上下文(包括精度和舍入方式)。
- setcontext():设置当前的上下文。
- Context:提供对精度、舍入、异常处理等的控制。
示例:设置精度和舍入模式
from decimal import Decimal, getcontext, Context # 设置精度 getcontext().prec = 4 print(Decimal('1.23456789')) # 输出: 1.235 # 设置舍入模式 getcontext().rounding = 'ROUND_DOWN' print(Decimal('1.2345')) # 输出: 1.234 # 使用自定义上下文 custom_context = Context(prec=2, rounding='ROUND_UP') with decimal.localcontext(custom_context): print(Decimal('1.2345')) # 输出: 1.24
算术运算
Decimal类支持各种算术运算,如加法、减法、乘法、除法等。还支持幂运算和对数运算。
示例:
from decimal import Decimal d1 = Decimal('1.1') d2 = Decimal('2.2') # 加法 print(d1 + d2) # 输出: 3.3 # 减法 print(d1 - d2) # 输出: -1.1 # 乘法 print(d1 * d2) # 输出: 2.42 # 除法 print(d1 / d2) # 输出: 0.5
其他数学函数
- exp():计算指数。
- ln():计算自然对数。
- log10():计算以10为底的对数。
- sqrt():计算平方根。
示例:
from decimal import Decimal d = Decimal('2') # 指数 print(d.exp()) # 输出: 7.3890560989306495721704871 # 自然对数 print(d.ln()) # 输出: 0.6931471805599453094172363 # 以10为底的对数 print(d.log10()) # 输出: 0.301029995663981 # 平方根 print(d.sqrt()) # 输出: 1.4142135623730950488016887
比较和排序
Decimal对象支持各种比较操作,如等于、大于、小于等。也支持排序操作。
示例:
from decimal import Decimal d1 = Decimal('1.1') d2 = Decimal('1.2') print(d1 < d2) # 输出: True print(d1 == d2) # 输出: False
常用方法
- is_finite():检查是否是有限值。
- is_infinite():检查是否是无穷大。
- is_nan():检查是否是非数(NaN)。
- is_zero():检查是否是零。
示例:
from decimal import Decimal d1 = Decimal('1.0') d2 = Decimal('NaN') print(d1.is_finite()) # 输出: True print(d2.is_nan()) # 输出: True
fractions:分数运算
fractions模块是Python标准库中的一个模块,用于处理有理数(即两个整数之比的数)的数学运算。这个模块提供了一个Fraction类,用于表示和操作分数。这种表示方式避免了浮点数运算中的精度问题,并且能够进行精确的数学运算。
创建Fraction对象
Fraction对象可以通过整数、浮点数、字符串或其他Fraction对象来创建。
from fractions import Fraction f1 = Fraction(3) # 从整数,表示3/1 f2 = Fraction(2, 5) # 从两个整数(分子和分母),表示2/5 f3 = Fraction(0.75) # 从浮点数(可能会丢失精度),表示3/4 f4 = Fraction('5/6') # 从字符串,表示5/6
示例:
from fractions import Fraction f1 = Fraction(3) f2 = Fraction(2, 5) f3 = Fraction(0.75) f4 = Fraction('5/6') print(f1) # 输出: 3 print(f2) # 输出: 2/5 print(f3) # 输出: 3/4 print(f4) # 输出: 5/6
基本运算
Fraction类支持加、减、乘、除等基本运算,还支持混合运算。
示例:
from fractions import Fraction f1 = Fraction(1, 2) f2 = Fraction(1, 3) # 加法 print(f1 + f2) # 输出: 5/6 # 减法 print(f1 - f2) # 输出: 1/6 # 乘法 print(f1 * f2) # 输出: 1/6 # 除法 print(f1 / f2) # 输出: 3/2
比较操作
Fraction类支持各种比较操作,如等于、大于、小于等。
示例:
from fractions import Fraction f1 = Fraction(1, 2) f2 = Fraction(2, 3) print(f1 < f2) # 输出: True print(f1 == f2) # 输出: False print(f1 <= f2) # 输出: True
属性和方法
- numerator:返回分数的分子。
- denominator:返回分数的分母。
- limit_denominator(max_denominator=1000000):将分数近似为具有指定最大分母的最接近的有理数。
- float():将分数转换为浮点数。
- as_integer_ratio():返回分数的整数表示形式。
示例:
from fractions import Fraction f = Fraction(22, 7) print(f.numerator) # 输出: 22 print(f.denominator) # 输出: 7 print(f.limit_denominator(10)) # 输出: 22/7 print(float(f)) # 输出: 3.142857142857143 print(f.as_integer_ratio()) # 输出: (22, 7)
math:数学函数
math模块是Python标准库中的一个模块,提供了许多与数学运算相关的函数和常量。这些函数和常量包括基本的数学运算、三角函数、对数函数、常量以及其他数学相关的操作。math模块的设计旨在提供高效的数学计算功能,并且大多数函数是针对浮点数的。
常量
- pi:圆周率π,约等于3.14159。
- e:自然对数的底e,约等于2.71828。
- tau:2π,圆周率的两倍,约等于6.28318。
- inf:表示正无穷大。
- nan:表示非数(Not a Number)。
基础数学运算
- ceil(x):返回大于或等于x的最小整数。
- floor(x):返回小于或等于x的最大整数。
- trunc(x):返回x的整数部分(向零取整)。
- fabs(x):返回x的绝对值。
- factorial(x):返回x的阶乘(x为非负整数)。
幂运算
- pow(x, y):返回x的y次方。
- sqrt(x):返回x的平方根。
- cbrt(x):返回x的立方根(Python 3.11+提供)。
三角函数
- sin(x):返回x的正弦值(x为弧度)。
- cos(x):返回x的余弦值(x为弧度)。
- tan(x):返回x的正切值(x为弧度)。
- acos(x):返回x的反余弦值(弧度)。
- atan(x):返回x的反正切值(弧度)。
- atan2(y, x):返回(x, y)点的反正切值,结果范围是[-π, π]。
asin(x):返回x的反正弦值(弧度)。
对数函数
- log(x, base):返回x的以base为底的对数。默认base为e。
- log10(x):返回x的以10为底的对数。
- log2(x):返回x的以2为底的对数。
双曲函数
- sinh(x):返回x的双曲正弦值。
- cosh(x):返回x的双曲余弦值。
- tanh(x):返回x的双曲正切值。
- asinh(x):返回x的反双曲正弦值。
- acosh(x):返回x的反双曲余弦值。
- atanh(x):返回x的反双曲正切值。
其他数学函数
- degrees(x):将弧度转换为角度。
- radians(x):将角度转换为弧度。
- gamma(x):返回x的伽马函数值(x>0)。
- lgamma(x):返回x的伽马函数值的自然对数。
cmath:复数数学函数
cmath模块是Python标准库中的一个模块,用于处理复数的数学运算。它提供了复数的数学函数,这些函数与math模块类似,但适用于复数(即包含实部和虚部的数值)。
主要常量
- pi:圆周率π,约等于3.14159。
- e:自然对数的底e,约等于2.71828。
基础复数运算
- polar(z):将复数z转换为极坐标形式,返回模(绝对值)和相位(角度)组成的元组。
- rect(r, phi):将极坐标形式转换为复数形式,r为模,phi为相位(弧度)。
复数的绝对值和相位
- phase(z):返回复数z的相位(角度)。
复数的基本运算
- exp(z):返回复数z的指数。
- log(z, base):返回复数z的对数,base为对数的底,默认以e为底。
- log10(z):返回复数z的以10为底的对数。
- sqrt(z):返回复数z的平方根。
- conj(z):返回复数z的共轭复数。
三角函数
- sin(z):返回复数z的正弦值。
- cos(z):返回复数z的余弦值。
- tan(z):返回复数z的正切值。
- asin(z):返回复数z的反正弦值。
- acos(z):返回复数z的反余弦值。
- atan(z):返回复数z的反正切值。
双曲函数
- sinh(z):返回复数z的双曲正弦值。
- cosh(z):返回复数z的双曲余弦值。
- tanh(z):返回复数z的双曲正切值。
- asinh(z):返回复数z的反双曲正弦值。
- acosh(z):返回复数z的反双曲余弦值。
- atanh(z):返回复数z的反双曲正切值。
random:生成伪随机数
random模块是Python标准库中的一个模块,提供了生成随机数的功能。它支持多种生成随机数的方法和算法,包括随机选择、随机打乱、随机采样等。这个模块对于需要随机性和非确定性数据的应用非常有用,例如模拟、游戏开发、数据分析等。
生成随机数
- random():返回一个[0.0, 1.0)区间内的随机浮点数。
- uniform(a, b):返回一个[a, b]区间内的随机浮点数。
- randint(a, b):返回一个[a, b]区间内的随机整数,包括a和b。
- randrange(start, stop, step):从指定范围内返回一个随机整数,范围是[start, stop)并且步长为step。
随机选择
- choice(seq):从序列seq中随机选择一个元素。
- choices(population, weights=None, k=1):从population中随机选择k个元素,weights可选,为每个元素分配权重。
- sample(population, k):从population中随机选择k个唯一的元素(不重复)。
随机打乱
- shuffle(x):随机打乱列表x中的元素。
生成随机分布
- gauss(mu, sigma):生成一个符合高斯分布(正态分布)的随机数,mu为均值,sigma为标准差。
- expovariate(lambd):生成一个符合指数分布的随机数,lambd是分布的倒数(λ的值)。
- betavariate(alpha, beta):生成一个符合贝塔分布的随机数,alpha和beta是分布的两个参数。
随机种子
- seed(a=None):初始化随机数生成器的种子。如果给定相同的种子值,则每次生成的随机数序列都相同。
- getstate():返回当前随机数生成器的状态。
- setstate(state):设置随机数生成器的状态。
statistics:基本统计功能
statistics模块是Python标准库中的一个模块,提供了用于统计运算的函数。这些函数包括计算基本的统计量,如均值、中位数、方差等,以及其他一些统计分析的工具。statistics模块主要用于数据分析和统计学计算,特别是在需要对数据集进行基本统计分析时非常有用。
statistics模块主要提供了以下功能:
- 计算基本统计量:如均值、中位数、众数等。
- 计算数据分布的离散程度:如方差、标准差等。
- 处理不同类型的统计数据:包括样本数据和总体数据。
计算均值
- mean(data):计算数据集data的算术平均值(均值)。
计算中位数
- median(data):计算数据集data的中位数。
- median_low(data):计算数据集data的中位数,若数据集大小为偶数,则返回较小的中位数。
- median_high(data):计算数据集data的中位数,若数据集大小为偶数,则返回较大的中位数。
- median_grouped(data, interval=1):计算数据集data的分组中位数,interval为分组区间长度。
计算众数
- mode(data):计算数据集data的众数,即出现频率最高的值。
- multimode(data):计算数据集data的所有众数,返回一个列表。
计算离散程度
- variance(data, xbar=None):计算数据集data的样本方差,xbar是数据集的均值(可选)。
- pvariance(data, mu=None):计算数据集data的总体方差,mu是数据集的均值(可选)。
- stdev(data, xbar=None):计算数据集data的样本标准差,xbar是数据集的均值(可选)。
- pstdev(data, mu=None):计算数据集data的总体标准差,mu是数据集的均值(可选)。
计算其他统计量
- summed(data):计算数据集data的总和(和)。
- harmonic_mean(data):计算数据集data的调和均值。
- gmean(data):计算数据集 data 的几何均值。
- tmean(data):计算数据集 data 的截尾均值。