可恶啊,numpy里面也有内置的一些数组运算函数,做些常用的整理好了。
使用前需要导入numpy模块
import numpy as np
1 数组操作
1.1 np.reshape()
numpy.reshape(arr, newshape, order='C')
描述: 该函数用来在不改变数据的条件下修改数组的形状
1.2 np.transpose()
numpy.transpose(arr, axes)
描述: 对于二维数组来讲,可以当做转置矩阵使用。np.adarray.T类似于np.transpose()
1.3 np.expand_dims
numpy.expand_dims(arr, axis)
参数说明:
- arr: 输入参数
- axis: 新轴插入的位置
axis: 关于这个axis一直困扰我很久,axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作;axis=1,表示沿着第1轴进行操作,即对每一行进行操作。
什么是维度(dimension)呢?
‘ndarray’的维度(dimension) 表示数组的 轴(axis) 的数量。(具体怎么使用还是要自行体会,经常会用这个函数整理数组形状以便能相互运算)
2 数学函数
2.1 三角函数
注意输入的ndarray对象,返回的也是ndarray对象
函数 | 描述 |
---|---|
np.sin(x) | return 数组中角度的正弦值 |
np.arcsin(x) | return 数组中角度的反正弦值 |
np.cos(x) | return 数组中角度的余弦值 |
np.arccos(x) | return 数组中角度的反余弦值 |
np.tan(x) | return 数组中角度的正切值 |
np.arctan(x) | return 数组中角度的反正切值 |
numpy.degrees() | return 数组中弧度制对应的角度值 |
ATTENTION 以上sin(),cos(),tan()函数,输入的是弧度值。如果数组x里面全是角度值,需要执行 x*np.pi/180,将其转换为弧度值。
2.2 舍入函数
2.2.1 np.around
numpy.around(a,decimals)
参数说明:
- decimals: 舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置
描述: 返回指定数字的四舍五入值
2.2.2 np.floor
描述: 返回小于或者等于指定表达式的最大整数,即向下取整。
2.2.3 np.ceil
描述: 返回大于或者等于指定表达式的最小整数,即向上取整。
2.3 算术函数
[ATTENTION] 数组必须具有后相同的形状或符合数组广播规则
什么是Numpy广播(Broadcast)?
- 广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。
广播的规则简单理解
- 数组拥有相同形状。
- 当前维度的值相等。
- 当前维度的值有一个是 1。
若条件不满足,抛出 “ValueError: frames are not aligned” 异常。
输入 ndarray对象 输出 ndarry对象
函数 | 描述 |
---|---|
np.add(a, b) | 加 |
np.subtract(a, b) | 减 |
np.mutiply(a, b) | 乘 |
np.divide(a, b) | 除 |
np.power(a, b) | 将a中的元素作为底数,计算a与b中相应元素的幂 |
np.mod(a,b) | 计算输入数组中相应元素的相除后的余数 |
2.4 统计函数
函数 | 描述 |
---|---|
np.amin() | 计算数组中的元素沿指定轴的最小值 |
np.amax() | 计算数组中的元素沿指定轴的最大值 |
np.ptp() | 计算数组中元素沿指定轴最大值与最小值的差(最大值 - 最小值) |
np.mean() | 计算数组中元素沿指定轴的算术平均值 |
np.average() | 计算数组中元素沿指定轴的平均值,可以指定权重数组计算加权平均值 |
np.std() | 计算标准差 |
np.var() | 计算方差 |
2.5 排序、条件筛选函数
2.5.1 np.sort()
numpy.sort(a, axis, kind, order)
描述: numpy提供了多种排序的方法
参数说明:
- kind: default = “quicksort”(快速排序),此外还有"mergesort"归并排序以及"heapsort"堆排序。
2.5.2 numpy.argsort()
**描述:**返回的是数组值从小到大的索引值
2.5.3 numpy.argmax() 和 numpy.argmin()
描述: 分别沿给定轴返回最大和最小元素的索引。
2.5.4 numpy.nonzero()
描述: 返回输入数组中非零元素的索引。
2.5.5 numpy.where()
描述: 返回输入数组中满足给定条件的元素的索引。
3 矩阵库
Numpy中包含了一个矩阵库numpy.matlib,该模块中的函数返回的是一个矩阵,而不是ndarray对象。
使用前需要导入
import numpy.matlib
3.1 转置矩阵 a.T
描述: 其作用同np.transpose(a)相同。
3.2 matlib.empty()
numpy.matlib.empty(shape, dtype, order)
描述: 返回一个新的矩阵
4 线性代数
NumPy 提供了线性代数函数库 linalg,该库包含了线性代数所需的所有功能。
4.1 np.dot()
umpy.dot(a, b, out=None)
描述:
该函数对于两个一维数组,计算的是这两个数组独赢下标元素的乘积和(数学上称之为向量点积);
对于二维数组,计算的是两个数组的矩阵乘积;
对于多维数组,数组a的最后一维上的所有元素与数组b的倒数第二位上的所有元素的乘积和。
4.2 np.vdot()
描述: 该函数是两个向量的点积。
如果第一个参数是负数,那么它的共轭复数会用于计算。
如果参数是多维数组,会被展开。
4.3 np.inner()
描述: 返回一维数组的向量内机。对于更高维度,返回最后一个轴上的乘积。
4.4 np.matmul()
描述: 返回两个数组的矩阵乘积。
如果任一参数的维数大于2,则将其视为存在于最后两个索引的矩阵的栈,并进行相应广播。另一方面,如果任一参数是一维数组,则通过在其维度上附加 1 来将其提升为矩阵,并在乘法之后被去除。
4.5 np.linalg.det()
描述: 计算输入矩阵的行列式。
4.6 np.linalg.inv()
描述: 返回计算矩阵的乘法逆矩阵
参考资料
[1]https://www.runoob.com/numpy/numpy-tutorial.html