02 numpy_02 数组的基本运算
1. 数组的四则运算
在numpy中实现四则运算,既可以使用符号,也可以使用函数
- + np.add(arr1, arr2)
- - np.subtract(arr1, arr2)
- * np.multiply(arr1, arr2)
- / np.divide(arr1, arr2)
- % np.fmod(arr1, arr2)
- // np.modf(arr1/arr2)[1]
-
** np.power(arr1, arr2)
2.比较运算
> >= < <= == !=
比较运算返回的是bool类型的值,即true 或者 false
比较运算用来筛选出特定的值或者对这些值进行一些操作
import numpy as np arr = np.array([[1,3,4],[5,6,7],[3,3,9]]) arr1 = np.array([[3,3,3],[3,3,3],[3,3,3]]) # 获取arr中比arr1大的元素, 返回的是一个一维数组 # arr > arr1 这个表达式返回的是一个与arr形状相同的数组,里边放的是一个个bool值,将这个bool数组作为索引,取arr中取值 arr[arr>arr1] # 获取arr中比6大的元素 arr[arr>6] # 将arr中大于3的位置改为0 arr2 = np.where(arr>3, 0, arr) # arr中大于3的位置改为0,否则变为1 np.where(arr>3, 0, 1)
3. 广播运算
广播运算: 参与运算的数组,维度不同,也能进行运算的功能
# 各个输入数组的维度可以不相同,但必须保证从右到左的对应维度值相等,如下例,arr的形状为5,4,3, arr1的形状为4,3 , 这样就可以参与运算
arr = np.arange(60).reshape(5,4,3) arr1 = np.arange(12).reshape(4,3) arr + arr1 # 如果对应维度值不相等,就必须保证其中一个的值为1 # arr 的形状为 5,4,3 arr1 的形状为 4,1 , 自动将arr1补齐为4,3的数组参与运算, arr1 = np.arange(4).reshape(4,1) arr + arr1
4.常用的数学和统计函数
数学函数
- np.pi 常数π
- np.e 常数e
- np.fabs(arr) 计算数组各元素的浮点型绝对值
- np.ceil(arr) 对数组个元素向上取整
- np.floor(arr) 对数组各元素向下取整
- np.round(arr) 四舍五入取整
- np.fmod(arr1, arr2) 计算arr1/arr2的余数
- np.modf(arr) 获取arr小数部分和整数部分
- np.sqrt(arr) 算数平方根
- np.square(arr) 平方值
- np.power(arr, α) 指数
- np.log2(arr) 计算以2为底,各元素的对数
- np.log10(arr) 计算以10为底,个元素的对数
- np.log(arr) 计算以e为底,各元素的对数
统计函数
- np.min(arr, axis) 按照轴的方向计算最小值
- np.max(arr, axis)
- np.mean(arr,axis)
- np.median(arr, axis) 中位数
- np.sum(arr, axis)
- np.std(arr, axis) 标准差
- np.var(arr,axis) 方差
- np.cumsum(arr,axis) 累计和
- np.cumprod(arr, axis) 累计乘积
- np.argmin(arr, axis) 最小值所在的位置
- np.argmax(arr, axis) 最大值所在的位置
- np.corrcoef(arr) 皮尔逊相关系数
- np.cov(arr) 协方差矩阵
5. 线性代数相关计算
数据挖掘理论背后离不开有关线性代数的计算问题,如矩阵乘法,矩阵分解,行列式求解等.本章介绍的numpy模块同样可以解决各种线性代数相关的计算,只不过需要调用numpy的子模块linalg(线性代数的缩写),该模块几乎提供了线性代数所需的所有功能.
线性代数相关重要函数:
- np.zeros(shape=[4,4]) 生成一个4*4 的零矩阵
- np.ones() 生成所有元素为1的矩阵
- np.eye(3) 生成3*3单位矩阵
- np.transpose() 矩阵转置
- np.dot 生成两个数组的点积
- np.inner 生成两个数组的内积
- np.diag 矩阵主对角线与一维数组间的转置
- np.trace 矩阵主对角线元素之和
- np.linalg.det 计算矩阵行列式
- np.linalg.eig 计算矩阵特征根与特征向量
- np.linalg.eigvals 计算方阵特征根
- np.linalg.inv 计算方阵的逆
- np.linalg.pinv 计算方阵的Moore-Penrose伪逆
- np.linalg.solve 计算 Ax=b线性方程组的解
- np.linalg.lstsd 计算 Ax=b的最小二乘解
- np.linalg.qr 计算qr分解
- np.linalg.svd 计算奇异值分解
- np.linalg.norm 计算向量或者矩阵的范数