在numpy中,有一个通函数-ufunc的概念,通函数是一类对数组中的元素逐个操作的函数,支持数组广播,类型转换以及一些其他的标准功能。numpy中定义了许多的通函数,用来对数组进行处理,比如最基本的数组加法运算
> import numpy as np
4) > a = np.arange(
> a
array([0, 1, 2, 3])
1,5) > b = np.arange(
> b
array([1, 2, 3, 4])
> a + b
array([1, 3, 5, 7])
上述代码在内部是通过调用通函数add来实现的,我们也可以单独调用通函数,用法如下
>>> np.add(a, b)
array([1, 3, 5, 7])
针对数值型数组,常用的数学运算的通函数有以下几种
两个数组间的加减乘除等算术运算,用法如下
> a
array([0, 1, 2, 3])
> b
array([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.])
0.4, 1.2, 2.6, 3.5]) > a = np.array([
# 四舍五入为最近的整数
> 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为底的对数
0(b) > np.log1
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)
对于数值型数组,经常需要统计极值,均值,方差,中位数等统计指标,常用的统计函数用法如下
100) > a = np.arange(
# 最小值
> 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
# 百分位数
25, 50, 75]) > np.percentile(a, q = [
array([24.75, 49.5 , 74.25])
# 百分位数,忽略NaN
25, 50, 75]) > np.nanpercentile(a, q = [
array([24.75, 49.5 , 74.25])
# 百分位数
0.25, 0.5, 0.75]) > np.quantile(a, q = [
array([24.75, 49.5 , 74.25])
# 百分位数,忽略NaN
0.25, 0.5, 0.75]) > np.nanquantile(a, q = [
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
# 计算每个区间的频数,区间为左闭右开
0, 20, 40, 60, 80, 100]) > np.histogram(a, bins = [
(array([20, 20, 20, 20, 20], dtype=int32), array([ 0, 20, 40, 60, 80, 100]))
numpy内置的函数非常丰富,基本满足了日常开发的需求,熟练使用每个函数,可以提高我们的编码效率。
·end·
联系客服