numpy数学函数
1. 三角函数
''' numpy.sin(x):三角正弦。 numpy.cos(x):三角余弦。 numpy.tan(x):三角正切。 numpy.arcsin(x):三角反正弦。 numpy.arccos(x):三角反余弦。 numpy.arctan(x):三角反正切。 numpy.hypot(x1,x2):直角三角形求斜边。 numpy.degrees(x):弧度转换为度。 numpy.radians(x):度转换为弧度。 numpy.deg2rad(x):度转换为弧度。作用与上radians()相同 numpy.rad2deg(x):弧度转换为度。作用与上degrees()相同 '''
import numpy as np #注意,这里的度,用np.pi/180表示,表示多少度,乘以倍数即可 print(np.sin(30)) #sin(30) #sin(30) '''-0.9880316240928618''' print(np.sin(30*np.pi/180)) #sin(30度) '''0.49999999999999994''' print(np.hypot(3,4))#:直角三角形求斜边。 '''5.0''' print(np.rad2deg(np.pi)) # 弧度转换为度 '''180.0''' print(np.deg2rad(180.0)) # 度转换为弧度。 '''3.141592653589793'''
2. 数值修约
''' numpy.around(a):平均到给定的小数位数。 numpy.round_(a):将数组舍入到给定的小数位数。 numpy.rint(x):修约到最接近的整数。 numpy.fix(x, y):向 0 舍入到最接近的整数。 numpy.floor(x):返回输入的底部(标量 x 的底部是最大的整数 i)。 numpy.ceil(x):返回输入的上限(标量 x 的底部是最小的整数 i). numpy.trunc(x):返回输入的截断值。 '''
import numpy as np a=[-3.14878,-2.48784,-1.4878,0.478784,1.4878,2.78779,3.7897848] print(np.around(a,2)) #保留2位小数 '''[-3.15 -2.49 -1.49 0.48 1.49 2.79 3.79]''' print(np.trunc(a)) #返回整数,丢弃小数部分 '''[-3. -2. -1. 0. 1. 2. 3.]''' print(np.fix(a)) #向0舍入到最接近的整数 '''[-3. -2. -1. 0. 1. 2. 3.]''' print(np.rint(a)) #返回最接近的整数 '''[-3. -2. -1. 0. 1. 3. 4.]''' print(np.floor(a))#向下最接近的整数 '''[-4. -3. -2. 0. 1. 2. 3.]''' print(np.ceil(a))#向上最接近的整数 '''[-3. -2. -1. 1. 2. 3. 4.]'''
3. 求和、求积、差分
'''不常用,有需要时,自行百度其详细使用方法 numpy.prod(a, axis, dtype, keepdims):返回指定轴上的数组元素的乘积。 numpy.sum(a, axis, dtype, keepdims):返回指定轴上的数组元素的总和。 numpy.nanprod(a, axis, dtype, keepdims):返回指定轴上的数组元素的乘积, 将 NaN 视作 1。 numpy.nansum(a, axis, dtype, keepdims):返回指定轴上的数组元素的总和, 将 NaN 视作 0。 numpy.cumprod(a, axis, dtype):返回沿给定轴的元素的累积乘积。 numpy.cumsum(a, axis, dtype):返回沿给定轴的元素的累积总和。 numpy.nancumprod(a, axis, dtype):返回沿给定轴的元素的累积乘积, 将 NaN 视作 1。 numpy.nancumsum(a, axis, dtype):返回沿给定轴的元素的累积总和, 将 NaN 视作 0。 numpy.diff(a, n, axis):计算沿指定轴的第 n 个离散差分。 numpy.ediff1d(ary, to_end, to_begin):数组的连续元素之间的差异。 numpy.gradient(f):返回 N 维数组的梯度。 numpy.cross(a, b, axisa, axisb, axisc, axis):返回两个(数组)向量的叉积。 numpy.trapz(y, x, dx, axis):使用复合梯形规则沿给定轴积分。 '''
4. 指数、对数
''' numpy.exp(x):计算输入数组中所有元素的指数。 numpy.log(x):计算自然对数。 numpy.log10(x):计算常用对数。 numpy.log2(x):计算二进制对数。 '''
5.算法运算
'''可用于数组与单个元素 numpy.add(x1, x2):对应元素相加。 numpy.reciprocal(x):求倒数 1/x。 numpy.negative(x):求对应负数。 numpy.multiply(x1, x2):求解乘法。 numpy.divide(x1, x2):相除 x1/x2。 numpy.power(x1, x2):类似于 x1^x2。 numpy.subtract(x1, x2):减法。 numpy.fmod(x1, x2):返回除法的元素余项。 numpy.mod(x1, x2):返回余项。 numpy.modf(x1):返回数组的小数和整数部分。 numpy.remainder(x1, x2):返回除法余数。 '''
6. 矩阵、向量积
''' numpy.dot(a, b):求解两个数组的点积。 numpy.vdot(a, b):求解两个向量的点积。 numpy.inner(a, b):求解两个数组的内积。 numpy.outer(a, b):求解两个向量的外积。 numpy.matmul(a, b):求解两个数组的矩阵乘积。 numpy.tensordot(a, b):求解张量点积。 numpy.kron(a, b):计算 Kronecker 乘积。 ''' import numpy as np a = [[1, 2, 3], [4, 5, 6]] b = [[2, 2], [3, 3], [4, 4]] print(np.matmul(a, b)) #求矩阵a*b积 ''' [[20 20] [47 47]] '''
7.数学运算
''' numpy.angle(z, deg):返回复参数的角度。 numpy.real(val):返回数组元素的实部。 numpy.imag(val):返回数组元素的虚部。 numpy.conj(x):按元素方式返回共轭复数。 numpy.convolve(a, v, mode):返回线性卷积。 numpy.sqrt(x):平方根。 numpy.cbrt(x):立方根。 numpy.square(x):平方。 numpy.absolute(x):绝对值, 可求解复数。 numpy.fabs(x):绝对值。 numpy.sign(x):符号函数。 numpy.maximum(x1, x2):最大值。 numpy.minimum(x1, x2):最小值。 numpy.nan_to_num(x):用 0 替换 NaN。 numpy.interp(x, xp, fp, left, right, period):线性插值。 '''
7. 代数运算
''' numpy.linalg.cholesky(a):Cholesky 分解。 numpy.linalg.qr(a ,mode):计算矩阵的 QR 因式分解。 numpy.linalg.svd(a ,full_matrices,compute_uv):奇异值分解。 numpy.linalg.eig(a):计算正方形数组的特征值和右特征向量。 numpy.linalg.eigh(a, UPLO):返回 Hermitian 或对称矩阵的特征值和特征向量。 numpy.linalg.eigvals(a):计算矩阵的特征值。 numpy.linalg.eigvalsh(a, UPLO):计算 Hermitian 或真实对称矩阵的特征值。 numpy.linalg.norm(x ,ord,axis,keepdims):计算矩阵或向量范数。 numpy.linalg.cond(x ,p):计算矩阵的条件数。 numpy.linalg.det(a):计算数组的行列式。 numpy.linalg.matrix_rank(M ,tol):使用奇异值分解方法返回秩。 numpy.linalg.slogdet(a):计算数组的行列式的符号和自然对数。 numpy.trace(a ,offset,axis1,axis2,dtype,out):沿数组的对角线返回总和。 numpy.linalg.solve(a, b):求解线性矩阵方程或线性标量方程组。 numpy.linalg.tensorsolve(a, b ,axes):为 x 解出张量方程 a x = b numpy.linalg.lstsq(a, b ,rcond):将最小二乘解返回到线性矩阵方程。 numpy.linalg.inv(a):计算逆矩阵。 numpy.linalg.pinv(a ,rcond):计算矩阵的(Moore-Penrose)伪逆。 numpy.linalg.tensorinv(a ,ind):计算 N 维数组的逆。 '''
数组索引与切片
索引
import numpy as np #TODO 1 数组索引 a = np.arange(10) # 生成一维数组 0-9 print(a) '''[0 1 2 3 4 5 6 7 8 9]''' print(a[1]) #获取索引值为 1 的数据。 '''1''' print(a[[1, 2, 3]]) #获取索引值为 1,2,3 的数据。 '''[1 2 3]''' a = np.arange(20).reshape(4, 5) #生成4行5列二维数组 print(a) ''' [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14] [15 16 17 18 19]]''' print(a[1,2]) #获取第二行,第三列的数据 '''7''' #比较与列表的区别 b=a.tolist() print(b[1][2])#获取第二行,第三列的数据 '''7'''
数组切片:
'和list 切片操作是一样的,[起始索引:截至索引:步长]' import numpy as np a = np.arange(10) #一维 print(a) '''[0 1 2 3 4 5 6 7 8 9]''' print(a[1:5]) '''[1 2 3 4]''' print(a[0:-1:2]) '''[0 2 4 6 8]''' a = np.arange(20).reshape(4, 5)#二维 print(a) ''' [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14] [15 16 17 18 19]]''' print(a[0:3, 2:4]) #(行切片,列切片) ''' [[ 2 3] [ 7 8] [12 13]] '''
排序
""" numpy.sort方法对多维数组元素进行排序。其方法为: numpy.sort(a, axis=-1, kind='quicksort', order=None) a:数组。 axis:要排序的轴。如果为None,则在排序之前将数组铺平。默认值为 -1,沿最后一个轴排序。 kind:{'quicksort','mergesort','heapsort'},排序算法。默认值为 quicksort numpy.lexsort(keys ,axis):使用多个键进行间接排序。 numpy.argsort(a ,axis,kind,order):沿给定轴执行间接排序。 numpy.msort(a):沿第 1 个轴排序。 numpy.sort_complex(a):针对复数排序。 """
import numpy as np a = np.random.rand(20).reshape(4, 5) # print(a) print(np.sort(a)) ''' [[0.16084851 0.46068528 0.54154642 0.919661 0.94382193] [0.11625906 0.26092216 0.40612362 0.69805412 0.92098232] [0.65406008 0.66565906 0.70732966 0.77505101 0.97876487] [0.11915551 0.50262157 0.58882585 0.72087149 0.82008241]] '''
搜素与计数
''' argmax(a ,axis,out):返回数组中指定轴的最大值的索引。 nanargmax(a ,axis):返回数组中指定轴的最大值的索引,忽略 NaN。 argmin(a ,axis,out):返回数组中指定轴的最小值的索引。 nanargmin(a ,axis):返回数组中指定轴的最小值的索引,忽略 NaN。 argwhere(a):返回数组中非 0 元素的索引,按元素分组。 nonzero(a):返回数组中非 0 元素的索引。 flatnonzero(a):返回数组中非 0 元素的索引,并铺平。 where(条件,x,y):根据指定条件,从指定行、列返回元素。 searchsorted(a,v ,side,sorter):查找要插入元素以维持顺序的索引。 extract(condition,arr):返回满足某些条件的数组的元素。 count_nonzero(a):计算数组中非 0 元素的数量。 '''
import numpy as np a = np.random.randint(0, 10, 20) print(a) '''[4 2 0 9 4 6 2 6 5 6 9 9 5 5 8 8 7 9 2 7]''' print(np.argmax(a)) #返回最大值的索引 '''3''' print(np.argmin(a)) #返回最小值的索引 '''2''' print(np.nonzero(a)) #返回不为0的索引 '''(array([ 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], dtype=int64),)''' print(np.count_nonzero(a))#返回不为0的数目 '''19''' print(np.extract(a>3,a)) #返回a中元素大于3的数组 '''[4 9 4 6 6 5 6 9 9 5 5 8 8 7 9 7]''' print(np.where(a>5)) #返回a中元素大于5所在的索引 '''(array([ 3, 5, 7, 9, 10, 11, 14, 15, 16, 17, 19], dtype=int64),)'''