打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
numpy中常用的数学运算和统计函数汇总
numpy用于操作数组,数组中的元素最常见的就是字符串和数值两种类型,本文针对数值型的数组,总结归纳了常用的数学运算和统计的函数。

在numpy中,有一个通函数-ufunc的概念,通函数是一类对数组中的元素逐个操作的函数,支持数组广播,类型转换以及一些其他的标准功能。numpy中定义了许多的通函数,用来对数组进行处理,比如最基本的数组加法运算

>>> import numpy as np>>> a = np.arange(4)>>> aarray([0, 1, 2, 3])>>> b = np.arange(1,5)>>> barray([1, 2, 3, 4])>>> a + barray([1, 3, 5, 7])

上述代码在内部是通过调用通函数add来实现的,我们也可以单独调用通函数,用法如下

>>> np.add(a, b)array([1, 3, 5, 7])

针对数值型数组,常用的数学运算的通函数有以下几种

 1.  两个数组间的算术运算

两个数组间的加减乘除等算术运算,用法如下

>>> aarray([0, 1, 2, 3])>>> barray([1, 2, 3, 4])# 加法>>> np.add(a,b)array([1, 3, 5, 7])# 减法>>> np.subtract(a,b)array([-1, -1, -1, -1])# 乘法>>> np.multiply(a,b)array([ 0, 2, 6, 12])# 除法>>> np.divide(a,b)array([0. , 0.5 , 0.66666667, 0.75 ])# 乘方>>> np.power(a,b)array([ 0, 1, 8, 81], dtype=int32)# 取余数>>> np.remainder(a,b)array([0, 1, 2, 3], dtype=int32)# 取余数>>> np.mod(a,b)array([0, 1, 2, 3], dtype=int32)# 取余数>>> np.fmod(a,b)array([0, 1, 2, 3], dtype=int32)# 同时取商和余数>>> np.divmod(a,b)(array([0, 0, 0, 0], dtype=int32), array([0, 1, 2, 3], dtype=int32))

2. 单个数组的数学运算

包括绝对值,四舍五入以及指数和对数运算,用法如下

# 绝对值>>> np.absolute(a)array([0, 1, 2, 3])# 绝对值>>> np.fabs(a)array([0., 1., 2., 3.])>>> a = np.array([0.4, 1.2, 2.6, 3.5])# 四舍五入为最近的整数>>> np.rint(a)array([0., 1., 3., 4.])>>> np.around(a)array([0., 1., 3., 4.])>>> np.round(a)array([0., 1., 3., 4.])# 只保留整数位>>> np.fix(a)array([0., 1., 2., 3.])# 向下取整>>> np.floor(a)array([0., 1., 2., 3.])# 向上取整>>> np.ceil(a)array([1., 2., 3., 4.])# 只保留整数位>>> np.trunc(a)array([0., 1., 2., 3.])# 自然对数的指数>>> np.exp(a)array([ 1. , 2.71828183, 7.3890561 , 20.08553692])# 2的指数>>> np.exp2(a)array([1., 2., 4., 8.])# 自然对数为底的对数>>> np.log(b)array([ -inf, 0. , 0.69314718, 1.09861229])# 以2为底的对数>>> np.log2(b)array([ -inf, 0. , 1. , 1.5849625])# 以10为底的对数>>> np.log10(b)array([ -inf, 0. , 0.30103 , 0.47712125])# 平方根>>> np.sqrt(a)array([0. , 1. , 1.41421356, 1.73205081])# 平方>>> np.square(a)array([0, 1, 4, 9], dtype=int32)

对于数值型数组,经常需要统计极值,均值,方差,中位数等统计指标,常用的统计函数用法如下

>>> a = np.arange(100)# 最小值>>> np.amin(a)0# 最大值>>> np.amax(a)99# 最小值,忽略NaN>>> np.nanmin(a)0# 最大值,忽略NaN>>> np.nanmax(a)99# 求和>>> np.sum(a)4950# 求和,忽略NaN>>> np.nansum(a)4950# 极差,最大值 - 最小值>>> np.ptp(a)99# 百分位数>>> np.percentile(a, q = [25, 50, 75])array([24.75, 49.5 , 74.25])# 百分位数,忽略NaN>>> np.nanpercentile(a, q = [25, 50, 75])array([24.75, 49.5 , 74.25])# 百分位数>>> np.quantile(a, q = [0.25, 0.5, 0.75])array([24.75, 49.5 , 74.25])# 百分位数,忽略NaN>>> np.nanquantile(a, q = [0.25, 0.5, 0.75])array([24.75, 49.5 , 74.25])# 均值>>> np.mean(a)49.5# 均值>>> np.average(a)49.5# 均值, 忽略NaN>>> np.nanmean(a)49.5# 中位数>>> np.median(a)49.5# 中位数,忽略NaN>>> np.nanmedian(a)49.5# 标准差>>> np.std(a)28.86607004772212# 标准差,忽略NaN>>> np.nanstd(a)28.86607004772212# 方差>>> np.var(a)833.25# 方差,忽略NaN>>> np.var(a)833.25# 计算每个区间的频数,区间为左闭右开>>> np.histogram(a, bins = [0, 20, 40, 60, 80, 100])(array([20, 20, 20, 20, 20], dtype=int32), array([ 0, 20, 40, 60, 80, 100]))

numpy内置的函数非常丰富,基本满足了日常开发的需求,熟练使用每个函数,可以提高我们的编码效率。

·end·

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python数据分析之numpy学习(二)
Python数据处理手册
Pandas中文官档 ~ 基础用法1
Python Numpy 数组的初始化和基本操作
利用Python进行数据分析:【NumPy】
统计师的Python日记【第3天:Numpy你好】
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服