zoukankan      html  css  js  c++  java
  • python——numpy (二)

    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'''
    View Code

    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.]'''
    View Code

    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]]
    '''
    View Code

    搜素与计数

    '''
    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),)'''
    View Code
  • 相关阅读:
    使用RedisDesktopManager工具,解决连接失败问题
    安装redis,搭建环境
    CentOS 7下GitLab搭建及配置
    Metasploit之Hash攻击(Hashdump、Quarks PwDump、Windows Credentials Editor、Mimikatz)
    Metasploit之令牌窃取
    Metasploit之漏洞利用( Metasploitable2)
    Metasploit之主机扫描
    Metasploit模块简介
    WAF的那些事
    XXE漏洞介绍 & XXE漏洞攻击 & 修复建议
  • 原文地址:https://www.cnblogs.com/-hao-/p/14674816.html
Copyright © 2011-2022 走看看