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 方差和标准差统计
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 为需要计算的集合对象。
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
Python系列 01 :数据类型之——数字
Python系列 01 :数据类型之——列表+元组
Python系列 01 :数据类型之——字典
Python系列 01 :数据类型之——集合
Python系列 01 :数据类型之——字符串
Python系列 02 :语法基础之——变量、分支结构
Python系列 02 :语法基础之——循环结构
Python系列 02 :语法基础之——函数
Python系列 03 :文件操作之——基本操作
Python系列 03 :文件操作之——文件属性
Python系列 03 :文件操作之——文件及文件夹操作
Python系列04:xlrd库
Python系列04:xlwt库和openpyxl库
Numpy库 - 基础操作(第一部分)
|