【Python标准库】数学相关的9个标准库

【Python标准库】数学相关的9个标准库

Python 数字与数学计算标准库详解

文章目录

Python 数字与数学计算标准库详解1. `math` —— 基础数学函数库2. `cmath` —— 复数数学函数库3. `decimal` —— 高精度十进制浮点计算4. `fractions` —— 分数计算模块5. `random` —— 伪随机数生成模块6. `statistics` —— 统计分析工具7. `itertools` —— 迭代器函数工具8. `functools` —— 函数式编程工具集9. `operator` —— 运算符函数接口

本文档系统介绍了 Python 中与

数学与数值计算相关的标准库。每一部分包含:库的简介、核心函数的分类与示例,以及常见用途。

其中,itertools和functools对Python的能力要求更高,计划之后专门写一篇文章来详细介绍一下。

1. math —— 基础数学函数库

简介 math 模块是 Python 中用于处理标准数学运算的模块,包含对整数和浮点数进行操作的函数,如三角函数、对数、指数、舍入、常数等。

该模块仅支持实数类型(不支持复数),其所有函数基本都遵循 C 标准库中 math 函数的实现。

函数分类与示例

三角函数

import math

print(math.sin(math.pi / 2)) # 1.0

print(math.cos(0)) # 1.0

print(math.tan(math.pi / 4)) # 0.999999...

指数与对数

print(math.exp(1)) # 2.71828...

print(math.log(8, 2)) # 3.0

print(math.log10(100)) # 2.0

幂与根

print(math.sqrt(16)) # 4.0

print(math.pow(2, 3)) # 8.0

常用函数

print(math.floor(2.7)) # 2

print(math.ceil(2.1)) # 3

print(math.trunc(-2.9)) # -2

常数

print(math.pi) # 3.1415...

print(math.e) # 2.7182...

print(math.tau) # 6.2831...

应用场景

科学计算、几何计算数值分析游戏物理模拟中的三角计算

2. cmath —— 复数数学函数库

简介 cmath 是 math 模块的复数扩展版本。它支持复数类型 complex 的运算,并返回复数结果。该模块的 API 与 math 类似,但输入输出为复数。

函数分类与示例

复数三角函数

import cmath

z = complex(1, 1)

print(cmath.sin(z))

print(cmath.cos(z))

幂与对数

print(cmath.exp(z))

print(cmath.log(z)) # 默认以e为底

print(cmath.sqrt(z))

极坐标函数

print(cmath.phase(z)) # 幅角

print(cmath.polar(z)) # 转极坐标

print(cmath.rect(1.414, 0.785)) # 极坐标转直角

应用场景

电路与信号处理中的复数计算频域分析(如 FFT)控制系统或量子力学建模

3. decimal —— 高精度十进制浮点计算

简介 decimal 提供十进制浮点数运算(Decimal 类),相比 float 更精确,特别适合需要严格控制精度和舍入的领域(如金融、货币、审计)。

可配置全局精度、舍入策略、截断模式等。

示例与函数

基本用法

from decimal import Decimal, getcontext

getcontext().prec = 6

a = Decimal('1.2345')

b = Decimal('2.3456')

print(a + b) # 精确加法

配置精度

getcontext().prec = 4

print(Decimal('1') / Decimal('7')) # 精度可控

货币运算场景

price = Decimal('19.99')

qty = Decimal('3')

print(price * qty) # 无浮点误差

应用场景

财务与金融系统科学计算中的精度控制法规严格场合的数值处理(如税务)

4. fractions —— 分数计算模块

简介 fractions 提供 Fraction 类用于有理数(即分数)表示,避免浮点精度误差。所有分数都会自动约简为最简形式。

支持与整数、浮点数、Decimal 混合计算,并保证精确表示。

示例与用法

创建与自动约分

from fractions import Fraction

a = Fraction(8, 12)

print(a) # 2/3

与整数/小数混合

print(Fraction('0.5')) # 1/2

print(Fraction(3) + Fraction(1, 4)) # 13/4

四则运算

a = Fraction(2, 3)

b = Fraction(1, 6)

print(a + b) # 5/6

print(a * b) # 1/9

应用场景

需要精确表示分数的教学系统代数运算与解题平台避免浮点误差的数学建模系统

5. random —— 伪随机数生成模块

简介 random 模块实现了伪随机数生成器,用于生成整数、浮点数、序列选择等,支持种子设置以保证结果可复现。

不适合用于加密(请用 secrets 模块)。

函数分类与示例

基本生成函数

import random

print(random.random()) # [0.0, 1.0)

print(random.randint(1, 6)) # 含端点

print(random.uniform(1.5, 3.5))# 浮点范围

序列操作

items = ['a', 'b', 'c']

print(random.choice(items)) # 随机选一个

print(random.sample(items, 2))# 不放回抽样

random.shuffle(items) # 原地打乱

种子设置(可复现)

random.seed(42)

print(random.random()) # 固定输出

应用场景

游戏和模拟器中的随机性抽样与洗牌算法数据增强、随机试验

6. statistics —— 统计分析工具

简介 statistics 是 Python 3.4 引入的模块,专门用于描述性统计分析。它提供了计算平均值、中位数、众数、方差、标准差、极差等常用统计量的函数,并基于真实样本进行精确推断。

该模块主要用于一维数值数据集合的基本描述性分析,不适合复杂多变量分析(推荐使用 numpy, pandas 或 scipy.stats )。

函数分类与示例

平均与中值

import statistics as stats

nums = [1, 2, 2, 3, 4]

print(stats.mean(nums)) # 2.4

print(stats.median(nums)) # 2

print(stats.median_low(nums)) # 2

print(stats.median_high(nums))# 2

众数与极值

print(stats.mode(nums)) # 2

print(stats.multimode(nums)) # [2](支持多众数返回)

方差与标准差

data = [600, 470, 170, 430, 300]

print(stats.variance(data)) # 27130.0

print(stats.stdev(data)) # 164.71...

其他函数

pstdev, pvariance: 总体标准差与方差harmonic_mean: 调和平均geometric_mean: 几何平均(3.8+)

应用场景

数据分析初步统计摘要报告教学与评估工具中的分布指标作为 pandas/numpy 的轻量补充

7. itertools —— 迭代器函数工具

简介 itertools 是 Python 提供的用于高效处理迭代器的函数集合,允许以惰性方式进行笛卡尔积、排列、组合、无限迭代、过滤、累积等。适用于函数式编程、数据生成、排列组合问题。

所有函数都返回迭代器对象,适用于懒加载、大数据等场景。

函数分类与示例

无限迭代器

from itertools import count, cycle, repeat

for i in count(10): # 从10开始数

if i > 13: break

print(i)

for i, x in zip(range(5), cycle('AB')):

print(x) # A B A B A

组合与排列

from itertools import combinations, permutations, product

print(list(combinations('ABC', 2))) # [('A','B'), ('A','C'), ...]

print(list(permutations('AB', 2))) # [('A','B'), ('B','A')]

过滤与分组

from itertools import compress, filterfalse

data = range(10)

print(list(filterfalse(lambda x: x%2, data))) # [0, 2, 4, 6, 8]

累积与打包

from itertools import accumulate

print(list(accumulate([1,2,3,4]))) # [1, 3, 6, 10]

应用场景

枚举组合优化(例如背包问题)懒加载批量数据处理数据生成与自动构造结构(如嵌套循环)

8. functools —— 函数式编程工具集

简介 functools 是 Python 提供的函数式编程工具模块,包含高阶函数、缓存(如 LRU)、偏函数、排序 key 提取、装饰器支持等。

它适合用于构建函数工厂、性能优化、控制函数行为。

常用函数

缓存优化

from functools import lru_cache

@lru_cache(maxsize=128)

def fib(n):

return n if n < 2 else fib(n-1) + fib(n-2)

print(fib(30))

偏函数

from functools import partial

power2 = partial(pow, 2)

print(power2(5)) # 32 (2**5)

比较与排序辅助

cmp_to_key(func):将旧式比较函数包装为排序 keytotal_ordering:只定义部分比较符号,即可自动补全

装饰器函数支持

wraps(func):保持原函数名、文档等信息

应用场景

构造复杂函数(如固定参数)提高递归函数性能(如缓存)函数工厂与闭包优化

9. operator —— 运算符函数接口

简介 operator 模块将常用操作符(如加减乘除、比较、逻辑运算等)转换为函数形式,便于在高阶函数或函数式编程中使用。

此外还提供针对对象、字典、序列的高效访问器函数。

常用函数与示例

算术运算函数

import operator

print(operator.add(3, 5)) # 8

print(operator.mul(2, 4)) # 8

比较函数

print(operator.eq(3, 3)) # True

print(operator.lt(1, 2)) # True

属性与项访问器

from operator import itemgetter, attrgetter

lst = [('apple', 2), ('banana', 1)]

print(sorted(lst, key=itemgetter(1)))

class Obj: val = 42

print(attrgetter('val')(Obj())) # 42

方法调用器

from operator import methodcaller

print(methodcaller('upper')('hello')) # 'HELLO'

应用场景

sorted()、map()、reduce() 中自定义 key替代 lambda 提高性能和可读性结构化数据访问与抽取

相关推荐

​夏洛特烦恼王智胸围是多少王智结婚了吗
台湾当代艺术家
s365app下载

台湾当代艺术家

📅 07-27 👀 5542
英特尔® 酷睿™ i7-3667U 处理器
s365app下载

英特尔® 酷睿™ i7-3667U 处理器

📅 08-03 👀 2505