Py学习  »  Python

python中数值相关的操作

生信修炼手册 • 3 年前 • 521 次点击  

欢迎关注”生信修炼手册”!


在python中,数值有以下3种类型

  1. int, 整数

  2. float,浮点数

  3. complex,复数

其中整数和浮点数都属于实数的范围,而复数使用到的情况较少,这里不做讨论。

字符型和布尔型的值可以转换为数值,方法如下

int(True)      # 结果为1
int(False) # 结果为0
int('3') # 结果为3
float('inf') # 结果为inf
float('NaN') # 结果为nan
float('nan') # 结果为nan
ord('A') # 结果为65

最后一个函数比较特殊,ord函数根据ASCII码将单个字符转换为数值,与之相对,chr函数可以将数值转换为ASCII编码的字符。

通过上述代码可以发现,python中有两个特殊数值,一个是无穷inf,一个是nan。对于实数的运算,提供了以下4个内置函数

1. abs

abs函数用于求绝对值,用法如下

abs(3)

2. round

round函数对数值进行四舍五入,用法如下

round(3.1415926)      #  3,默认只保留整数
round(3.1415926, 2) # 3.14, 第二个参数控制保留小数点后几位

3. divmod

divmod函数进行除法运算,保留商和余数,用法如下

divmod(7, 3)

返回值为商和余数构成的元组,上述语句的返回值为(2, 1)

4. pow

pow函数默认进行幂次运算,用法如下

pow(2, 3)      # 2 ** 3, 结果为8
pow(2, 3, 3) # 2 ** 3 % 3, 结果为2

提供两个参数时,进行幂次运算,提供三个参数时,将前两个参数幂次运算的结果与第三个参数相除,取余数。

除了内置函数外,更多的实数运算可以通过内置模块math来操作,该模块定义了很多常见的数学运算。

1. 常数

在该模块中,提供了几个数学常量,比如π,自然常数等,写法如下

math.pi    # π
math.e # 自然常数
math.tau # 2π
math.inf # 无穷大
math.nan # 非数字

2. 常用函数

math.ceil(4.1)          #  5, 向上取整
math.floor(4.1) # 4, 向下取整
math.fabs(-3) # 3, 绝对值
math.fsum((-1, 1)) # 0, 求和,返回值为浮点数
math.factorial(3) # 6, 阶乘
math.comb(3,2) # 3, 排列
math.perm(3,2) # 6, 组合
math.prod((2, 3, 2)) #12, 累乘
math.isfinite(1) # True, 如果一个数不是无穷或者NaN,返回True
math.isinf(math.inf) # True. 如果一个数数正或者负无穷大,返回True
math.isnan(math.nan) # True, 如果是NaN, 返回True
math.trunc(3.1) # 3, 截取数值的整数部分

3. 幂函数与对数函数


返回值为浮点数




    
math.log(math.e)  # 自然对数
math.log(100, 10) # 第二个参数表示底数,log以10为底的对数
math.log2(4) # log2
math.log10(100) # log10
math.sqrt(4) # 平凡根
math.pow(2, 3) # 幂运算
math.exp(2) # e ** 2

以上只是math模块中的部分函数,完整的函数列表请查看官方文档

https://docs.python.org/zh-cn/3/library/math.html

在实际工作中,对于数值我们还需要进行随机数操作,此时就需要用到内置模块random。需要明确一点,这里的随机数本质是伪随机数。通过设置随机数发生器,可以使得每次随机抽样的结果都相同, 用法如下

import random # 导入模块
random.seed(1) # 设定随机数发生器
random.randrange(10) #随机抽样,结果为2
# 用相同的随机数发生器,再次抽样,结果完全相同
random.seed(1)
random.randrange(10)

常用的随机数操作如下

# 随机抽取一个0到10之间的整数
>>> random.randrange(10)
2
# 先模拟产生一个0到10,步长为5的序列,再随机抽取一个整数
>>> random.randrange(0, 10, 5)
5
# 随机抽取一个0到10之间的整数
>>> random.randint(0, 10)
7
>>> a = [1, 2, 3, 4, 5]
# 从序列中随机抽取一个元素
>>> random.choice(a)
4
# 从序列中随机抽取k个元素,无重复的随机抽样,返回子集
>>> random.sample(a, 2)
[1, 4]
# 随机打乱顺序
>>> random.shuffle(a)
>>> a
[2, 1, 5, 3, 4]
# 随机抽取一个0到1之间的浮点数
>>> random.random()
0.10222715811004823
# 随机抽取一个高斯分布的值
>>> random.gauss(0, 1)
-0.08735515600559883

以上只是random模块中的部分函数,完整的函数列表请查看官方文档

https://docs.python.org/zh-cn/3/library/random.html

对于一系列的数值,我们可以计算均值,中位数等统计指标,此时需要用到内置的statistics模块,常见操作如下

import statistics
# 计算平均数
>>> statistics.mean(a)
3
# 计算平均值,返回值为浮点数
>>> statistics.fmean(a)
3.0
# 计算四分位数
>>> statistics.quantiles(a)
[1.5, 3.0, 4.5]
# 计算中位数
>>> statistics.median(a)
3
# 计算标准差
>>> statistics.stdev(a)
1.5811388300841898
# 计算方差
>>> statistics.variance(a)
2.5

以上只是statistics模块中的部分函数,完整的函数列表请查看官方文档

https://docs.python.org/zh-cn/3/library/statistics.html

内置函数和内置模块提供了常见的数值操作,这些都是基础,需要熟练掌握。

·end·

—如果喜欢,快分享给你的朋友们吧—



原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!
本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。
  更多精彩



  写在最后


转发本文至朋友圈,后台私信截图即可加入生信交流群,和小伙伴一起学习交流。


扫描下方二维码,关注我们,解锁更多精彩内容!


一个只分享干货的

生信公众号


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/62400
 
521 次点击