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 计算向量或者矩阵的范数 
posted @ 2019-11-09 15:17  眼镜儿  阅读(324)  评论(0编辑  收藏  举报