Python基础(十九):数学相关模块
创始人
2025-05-31 10:20:20
  1. 简介

Python 中数学相关模块,如下所示:

模块

描述

math

提供了对 C 标准定义的数学函数的访问(不适用于复数)

cmath

提供了一些关于复数的数学函数

decimal

为快速正确舍入的十进制浮点运算提供支持

fractions

为分数运算提供支持

random

实现各种分布的伪随机数生成器

statistics

提供了用于计算数字数据的数理统计量的函数

  1. math模块

math 模块中包含内容,如下所示:

>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']

具体看一下该模块的常用函数和常量。

ceil(x):

返回 x 的上限,即大于或者等于 x 的最小整数。看下示例:

import mathx = -1.5
print(math.ceil(x))

floor(x):

返回 x 的向下取整,小于或等于 x 的最大整数。看下示例:

import mathx = -1.5
print(math.floor(x))

fabs(x):

返回 x 的绝对值。看下示例:

import mathx = -1.5
print(math.fabs(x))

fmod(x, y):

返回 x/y 的余数,值为浮点数。看下示例:

import mathx = 3
y = 2
print(math.fmod(x, y))

factorial(x):

返回 x 的阶乘,如果 x 不是整数或为负数时则将引发 ValueError。看下示例:

import mathx = 3
print(math.factorial(3))

pow(x, y):

返回 x 的 y 次幂。看下示例:

import mathx = 3
y = 2
print(math.pow(x, y))

fsum(iterable):

返回迭代器中所有元素的和。看下示例:

import mathprint(math.fsum((1, 2, 3, 4, 5)))

gcd(x, y):

返回整数 x 和 y 的最大公约数。看下示例:

import mathx = 9
y = 6
print(math.gcd(x, y))

sqrt(x):

返回 x 的平方根。看下示例:

import mathx = 9
print(math.sqrt(x))

trunc(x):

返回 x 的整数部分。看下示例:

import mathx = 1.1415926
print(math.trunc(x))

exp(x):

返回 e 的 x 次幂。看下示例:

import mathx = 2
print(math.exp(2))

log(x[, base]):

返回 x 的对数,底数默认为 e。看下示例:

import mathx = 10
y = 10
# 不指定底数
print(math.log(x))
# 指定底数
print(math.log(x, y))

常量:

import math# 常量 e
print(math.e)
# 常量 π
print(math.pi)

tan(x):

返回 x 弧度的正切值。看下示例:

import mathprint(math.tan(math.pi / 3))

atan(x):

返回 x 的反正切值。看下示例:

import mathprint(math.atan(1))

sin(x):

返回 x 弧度的正弦值。看下示例:

import mathprint(math.sin(math.pi / 3))

asin(x):

返回 x 的反正弦值。看下示例:

import mathprint(math.asin(1))

cos(x):

返回 x 弧度的余弦值。看下示例:

import mathprint(math.cos(math.pi / 3))

acos(x):

返回 x 的反余弦值。看下示例:

import mathprint(math.acos(1))
  1. decimal模块

decimal 模块为正确舍入十进制浮点运算提供了支持,相比内置的浮点类型 float,它能更加精确的控制精度,能够为精度要求较高的金融等领域提供支持。

decimal 在一个独立的 context 下工作,可以使用 getcontext() 查看当前上下文,如下所示:

>> from decimal import *
>>> getcontext()
Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])

从上面的结果中我们可以看到 prec=28,这就是默认的精度,我们可以使用 getcontext().prec = xxx 来重新设置精度。接下来通过具体示例看一下。

基本运算:

import decimald1 = decimal.Decimal(1.1)
d2 = decimal.Decimal(9.9)
print(d1 + d2)
print(d1 - d2)
print(d1 * d2)
print(d1 / d2)

执行结果:

11.00000000000000044408920985
-8.800000000000000266453525910
10.89000000000000127009514017
0.1111111111111111160952773272

上面结果是用了默认精度,我们重新设置下精度再来看一下:

import decimaldecimal.getcontext().prec = 2
d1 = decimal.Decimal(1.1)
d2 = decimal.Decimal(9.9)
print(d1 + d2)
print(d1 - d2)
print(d1 * d2)
print(d1 / d2)

执行结果:

11
-8.8
11
0.11
  1. random模块

random 模块可以生成随机数,我们来看一下其常用函数。

random():

返回 [0.0, 1.0) 范围内的一个随机浮点数。看下示例:

import randomprint(random.random())

uniform(a, b):

返回 [a, b) 范围内的一个随机浮点数。看下示例:

import randomprint(random.uniform(1.1, 9.9))

randint(a, b):

返回 [a, b] 范围内的一个随机整数。看下示例:

import randomprint(random.randint(1, 10))

randrange(start, stop[, step]):

返回 [start, stop) 范围内步长为 step 的一个随机整数。看下示例:

import randomprint(random.randrange(1, 10))
print(random.randrange(1, 10, 2))

choice(seq):

从非空序列 seq 返回一个随机元素。看下示例:

import randomprint(random.choice('123456'))
print(random.choice('abcdef'))

shuffle(x[, random]):

将序列 x 随机打乱位置。看下示例:

import randoml = [1, 2, 3, 4, 5, 6]
random.shuffle(l)
print(l)

sample(population, k):

返回从总体序列或集合中选择的唯一元素的 k 长度列表,用于无重复的随机抽样。看下示例:

import randoml = [1, 2, 3, 4, 5, 6]
print(random.sample(l, 3))

相关内容

热门资讯

【开源协议】关于6种开源协议的... 关于开源协议的说明前言开源协议分为 宽松型 和 著作权型。如何选择?开源协议(GPL,...
easymock不能用了?fa... 什么是fast mock 前端常常要等待后面接口写好后,才能集成测试,免...
GIS的一些简单算法(自己作记... 一、线的矢量算法 1、简单的线相交算法 算法1:快速排斥与矢量跨立         快...
催债令来了!国家急了,严禁机关... 作者 | 剑书发现没有,当前国家摆在最高优先级的一件大事,竟然是给中小企业还清欠款。就在6月1日,国...
数据分析思维|思考问题的25个... 逻辑思维:能够理性分析问题,梳理出问题的本质和关键点,建立...
三、Docker:Compos...   Docker-compose 是用于定义和运行多容器 Docker 应用程序的编排工具。使用 d...
理想汽车5月交付40856辆,... 新京报贝壳财经讯 6月1日,理想汽车公布2025年5月交付数据。5月份,理想汽车交付新车40856辆...
新宙邦:公司对高性能电子材料均... 证券日报网讯 新宙邦5月30日在互动平台回答投资者提问时表示,公司对高性能电子材料均做了一些布局。其...
电商酒水类产品打假有哪些操作(... 线上酒水类产品蓬勃发展,但产品假货问题也随之而来,不仅损害了品牌商家的合法权益,还对消费者的健康和安...
今年很火的AI绘画怎么玩 1.前言 2022年绝对可以说是AIGC元年,从google搜索的趋势来看࿰...
canvas 教程 指南 万字... 前端妹子问我为什么官网上面只有一个canvas标签,里面什么都没有… 我脸色一变”完了...
开发一个app需要多少钱 APP应用开发主要分为原生APP和HTML5APP开发,使用HTML5开发的app价格...
vue项目的创建 npm install postcss postcss-pxtorem --save-dev 什么是...
二十六、对象的实例化内存布局与... 一、对象的实例化 1.判断对象对用的类是否加载、链接、初始化。 2.为对象分配内存。 3.处理并发...
助力私募行业高质量发展,华西证...   践行传播行业文化,进一步促进私募行业高质量发展,资本市场这场现象级行...
创建索引,解决mysql数据查... 实战场景 :两个表 T_PLATFORM A left join T_OPER_REC...
5. Python中的异常处理... 1. 说明: 自己写的代码保证万无一失有点难度,代码报出异常后ÿ...
图神经网络(GCN) 一、GCN的起源 曾经深度学习一直都是被几大经典模型给统治着,如CNN、RNN等等&#...
5月汽车销量出炉:理想力压小鹏... 【市场】6月第一天,多家汽车企业公布了5月的销量数据,和去年相比实现了两位数增长,但排名发生了变化。...
Python数据结构与算法(p... 主要内容:什么是列表查找顺序查找二分查找一、什么是查找?(...
状态机DP 状态机DP算法特征子数组类DP问题的定义:以最后一个元素结尾的最大xxx特征1...
mendeley管理文献样式 编辑GB/T 7714—2005参考文件样式,解决:显示大小写ÿ...
多次谋求A股上市!锂电巨头业绩... 知名锂电池生产企业天津力神电池股份有限公司(下称“天津力神”)的经营情况曝光。证券时报·e公司记者在...
前沿技术揭秘:云原生-展望容器... 2023年最火热的就是ChatGPT,当然还有5G技术、AI、机器学习、区块链等技术。另外还有一个现...
WalletConnect的下... 加密行业中每一个项目都有它自己的作用,很多我们意想不到或者认为的事情往往最后都会出现转...
独家 | 大润发佘咸平任永辉C... 交流永辉,实名添加微信lihua759321进群多位市场人士向《商业观察家》确认,大润发M会员店商品...
拼多多管理层多次强调利润不可持... 近日,拼多多一季度财报引起市场热议。财报显示,拼多多一季度营收957亿元,同比增长10%,归母净利润...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
矿泉水瓶装大米,便利店能增收3... 矿泉水瓶装大米,便利店能增收300万 把大米装进矿泉水瓶,一瓶卖到60块...
港股迎来打新热!“散户失权”引... 港股行情提振,新股表现亮眼,打新又热了。Wind显示,2025年港股已迎来27只新股,其中仅7只上市...