Numpy 库第二部分
3、基本数学计算
3.1 加减乘除
3.1.1 加法
import numpy as np
# 数组与数组相加
one = np.ones(4).reshape(2,2)
print('one:', one)
two = np.arange(4).reshape(2,2)
print('two:', two)
print('one+two:', one + two)
# 数组与标量相加
print('one + 1:', one + 1)
one += 4
print('one:', one)
>>> output:
one: [[1. 1.]
[1. 1.]]
two: [[0 1]
[2 3]]
one+two: [[1. 2.]
[3. 4.]]
one + 1: [[2. 2.]
[2. 2.]]
one: [[5. 5.]
[5. 5.]]
3.1.2 减法
import numpy as np
# 数组与数组相减
one1 = np.arange(1, 10).reshape(3,3)
print('one1:', one1)
val1 = one1 - np.full((3,3),5)
print('val1:', val1)
# 数组与标量相减
print('one1 - 5:', one1 - 5)
one1 -= 1
print('one1:', one1)
>>> output:
one1: [[1 2 3]
[4 5 6]
[7 8 9]]
val1: [[-4 -3 -2]
[-1 0 1]
[ 2 3 4]]
one1 - 5: [[-4 -3 -2]
[-1 0 1]
[ 2 3 4]]
one1: [[0 1 2]
[3 4 5]
[6 7 8]]
3.1.3 乘法
import numpy as np
# 数组与数组相乘
one2 = np.arange(1, 5).reshape(2,2)
print('one2:', one2)
multi = np.full((2,2),2)
print('multi:', multi)
print('one2 * multi:', one2 * multi)
# 数组与标量相乘
print('one2 * 3:', one2 * 3)
one2 *= 2
print('one2:', one2)
>>> output:
one2: [[1 2]
[3 4]]
multi: [[2 2]
[2 2]]
one2 * multi: [[2 4]
[6 8]]
one2 * 3: [[ 3 6]
[ 9 12]]
one2: [[2 4]
[6 8]]
3.1.4 除法
import numpy as np
# 数组与数组相除
one3 = np.full((2,2),8)
print('one3:', one3)
d1 = np.array([[2,2],[2,2]])
print('one3 / d1:', one3 / d1)
# 数组与标量相除
print('one3 / 2:',one3 / 2)
>>> output:
one3: [[8 8]
[8 8]]
one3 / d1: [[4. 4.]
[4. 4.]]
one3 / 2: [[4. 4.]
[4. 4.]]
one3 /= 2
不被支持,会发生报错。
3.2 其他运算方法
计算方法 | 运算符 | 计算方法 | 运算符 |
---|---|---|---|
求余 | % | 大于等于 | >= |
求幂 | ** | 小于等于 | <= |
取整 | // | 与运算 | & |
等于 | == | 或运算 | | |
不等于 | != | 非运算 | ~ |
大于 | > | 左移运算 | << |
小于 | < | 右移运算 | >> |
4、通用函数
4.1 初等函数
函数名 | 表达式 | 函数名 | 表达式 |
---|---|---|---|
正弦函数 | np.sin() | 双曲正切函数 | np.tanh() |
余弦函数 | np.cos() | 反双曲正弦函数 | np.arcsinh() |
正切函数 | np.tan() | 反双曲余弦函数 | np.arccosh() |
反正弦函数 | np.arcsin() | 反双曲正切函数 | np.arctanh() |
反余弦函数 | np.arccos() | 弧度转角度函数 | np.degrees() ;rad2deg() |
反正切函数 | np.arctan() | 角度转弧度函数 | np.radians() ;np.deg2rad() |
双曲正弦函数 | np.sinh() | 直角三角形求斜边函数 | np.hypot() |
双曲余弦函数 | np.cosh() |
4.2 随机函数
表达式 | 含义 |
---|---|
np.random.rand(d0, d1, ..., dn) | 产生[0,1) 范围内的浮点随机数,其中dn 用于指定维度长度 |
np.random.randn(d0, d1, ..., dn) | 产生标准正态分布随机数,参数dn 用于指定维度长度 |
np.random.randint(low, high=None, size=None, dtype='l') | 产生[low, high) 范围内的整型随机数,size 指定数组大小(含维数控制) |
random.normal (loc=0.0, scale=1.0, size=None) | 产生正态分布随机数。loc 为期望,scale 为标准差,size 为数组大小 |
np.random.uniform (low=0.0, high=1.0, size=None) | 在[low, high) 范围内产生均匀分布的随机数 |
np.random. poisson(lam=1.0, size=None) | 产生泊松分布随机数,参数lam 为期望间隔,size 指定数组大小,可以是多维数组形式。 |
np.random.permutation(x) | 生成一个随机的乱序数组,当x设置为标量时,则返回指定范围值[0,n) 的乱序数组,当x 为可变集合(如数组、列表)时,则对集合里的值进行乱序排列。 |
np.random.shuffle(x) | 直接对x数组进行乱序处理 |
np.random.choice(a, size=None, replace=True, p=None) | 从指定的样本a 中随机抽取size 个元素,replace=False 时抽取的数不能重复,默认可以重复,p 列表值设置样本a 的权重,列表元素为小数,加起来总权重为1 。 |
4.3 数组集合运算
操作 | 表达式 | 操作 | 表达式 |
---|---|---|---|
唯一化(去除重复元素) | np.unique() | 两个数组元素的差集 | np.setdiff1d() |
两个数组元素的交集 | np.intersect1d() | 两个数组元素的异或(去掉两个数组都有的元素) | np.setxor1d() |
两个数组元素的并集 | np.union1d() | 判断一个数组的元素是否在另一个数组内 | np.in1d() |
4.4 基础统计函数
4.4.1 和统计
np.sum(a, axis=None, dtype=None)
,a
为需要统计的集合对象,dtype
指定返回数组的类型。
4.4.2 乘积统计
np.prod(a, axis=None,dtype=None)
,a
为需要统计的集合对象,dtype
指定返回数组的类型。
4.4.3 最大数统计
np.max(a, axis=None)
,a
为需要统计的集合对象。等同于amax()
函数或数组a.max()
方法。
4.4.4 最小数统计
np.min(a, axis=None)
,a
为需要统计的集合对象。等同于amin()
函数或数组a.min()
方法。
4.4.5 累积和统计
np.cumsum(a, axis=None)
,a
为需要统计的集合对象。等同于数组a.cumsum()
方法。
4.4.6 累积乘积统计
np.cumpord(a,axis=None,dtype=None)
,其中,a
为需要统计的集合对象,dtype
指定返回数组的类型。
4.4.7 平均数统计
- 算术平均值统计
np.mean(a, axis=None,dtype=None)
,a
为需要统计的集合对象,dtype
指定返回数组的类型。
- 加权平均值统计
np.average(a, axis=None, weights=None, returned=False)
,a
为需要统计的集合对象,为每个元素提供权重数(可以是一个标量,也可以是一个权重数集合);returned=False
,以数组形式返回计算结果(或标量);returned=True
,以元组形式返回计算结果。
- 中值统计
np.median(a, axis=None)
,a
为需要统计的集合对象。
4.4.8 方差和标准差统计
- 求方差(Variance)
np.var(a, axis=None, dtype=None)
,a
为需要统计的集合对象,dtype
指定返回数组的类型。
- 求标准差
np.std(a, axis=None, dtype=None)
,a
为需要统计的集合对象,dtype
指定返回数组的类型。
4.4.9 轴最大最小值差统计
np.ptp(a, axis=None)
,a
为需要统计的集合对象。数组可以用a1.ptp()
方法。
4.5 高级统计函数
所谓高级函数,指普通生活中很少使用的,但是在数据高级分析、机器学习、科学研究中所需要使用的一类统计函数。
4.5.1 计算沿指定轴的元素个数的第q个百分位数,求观察值
np.percentile(a, q, axis=None)
,a
为需要统计的集合对象,q
为要计算的百分位数或百分位数序列(q
的取值区间为[0,100]
)。返回q%
范围内的观察值。
4.5.2 一阶差分,计算沿给定轴的n次迭代离散差。
np.diff(a, n=1, axis=-1)
,a
为需要统计的集合对象,n
迭代离散差次数,默认值n=1
。
4.5.3 数组的连续元素之间的差异
np.ediff1d(ary, to_end=None, to_begin=None)
,ary
为需要统计的集合对象;to_end
可选,在返回的差异结束时追加的数字(或集合元素);to_begin
,返回差异开头前的数字。
4.5.4 梯度计算
np.gradient(f)
,f
为需要计算的集合对象。
4.5.5 使用复合梯形规则沿给定轴积分
np.trapz(y,axis=-1)
,其中,y
为需要计算的集合对象。
4.6 排序
np.sort(a, axis=-1)
,a
为需要统计的集合对象,axis=0
以列为单位进行排序,axis=1
以行为单位进行排序。
4.7 将数值替换到数组指定位置
4.7.1 根据条件和输入值更改数组的元素
np.place(arr, mask, vals)
,arr
为数组对象,mask
为符合条件的逻辑表达式,vals
为需要插入的标量或集合对象。等价于putmask ()
函数的用法和功能。
4.7.2 用给定值替换数组的指定元素
np.put(a,ind, v, mode='raise')
,a
为需要替换的数组对象,ind
为替换顺序下标位置,v
为提供可以替换数值的集合对象。
4.7.3 通过指定axis和花式索引将值放入目标数组.
np.put_along_axis(arr, indices, values, axis)
,arr
为需要替换的数组对象,indices
花式索引确定需要替换的下标范围,values
为提供的可以替换的数值或集合。上述四个参数为必选项。
4.7.4 填充任何维度的给定数组的主对角线.
np.fill_diagonal(a,val, wrap=False)
,a
至少是2
维数组,val
为主对角线上需要填写的数值。
4.8 增加和删除行(列)
4.8.1 删除数组行(列)元素
np.delete(arr,obj, axis=None)
,arr
为数组对象,obj
为下标切片、下标标量、下标列表、下标整数数组,axis=None
默认值,删除后的新数组为一维数组,在axis=1
的情况下,保留元素按照行方向形成新数组;在axis=0
的情况下,保留元素按照列方向形成新数组。
4.8.2 插入行(列)元素
np.insert(arr,obj, values, axis=None)
,arr
为数组对象,obj
为需要插入值处的下标切片、下标标量、下标列表、下标整数数组,values
为需要插入的集合对象,axis
使用方法同delete()
参数。
4.8.3 将指定值附加到数组的末尾
np.append(arr, values, axis=None)
,arr
为数组对象,values
为需要插入的集合对象,要求values
和arr
必须具有相同维数,否则报错。
4.8.4 修剪一维集合对象的前导或尾随为0的值
np.trim_zeros(filt, trim='fb')
,filt为集合对象。
4.9 数值修约等杂项函数
4.9.1 数值修约函数
- 四舍五入函数
np.around(a, decimals=0)
,a
为需要计算的集合对象,decimals
保留的数位(正整数指保留的小数位数,如1
为保留一位小数;负整数为保留的整数位数,如-1
四舍五入到十位数)。
- 简单取最接近的整数
np.rint(x)
,x
为需要计算的集合对象。
- 向 0方向舍入到最接近的整数
np.fix(x)
,x
为需要计算的集合对象。
- 取浮点数的整数部分,舍去小数
np.floor(x)
,x
为需要计算的集合对象。等价于trunc(x)
函数。
- 返回输入元素的上限整数
np.ceil(x)
,x
为需要计算的集合对象。
4.9.2 条件比较函数
np.where(condition, [x, y])
,根据condition
条件,选择x
数组或y
数组里的元素,并以数组形式返回。condition
值为True
,则迭代返回符合条件的x
数组内的元素;condition
值为False
,则返回符合条件的y
数组内的元素。
4.9.3 求绝对值函数
np.abs(x)
,x
为需要计算的集合对象。其全名函数为absolute(x)
。
END
编辑 | sxlibe
- 往期目录: