zoukankan      html  css  js  c++  java
  • numpy 的四则运算

    一、一维矩阵的加减乘除,三角函数

    注意,如果是两个数组运算,则元素个数要一致

    import  numpy as np
    a=np.array([10,20,30,40])  #array([10, 20, 30, 40])
    b=np.arange(4)  #array([0, 1, 2, 3])
    c=np.arange(3)  #array([0, 1, 2])
    a+4  #array([14, 24, 34, 44])
    a+b  #array([10, 21, 32, 43])
    
    #如果两个数组元素个数不一致,就不能相加
    a+c   #ValueError: operands could not be broadcast together with shapes (4,) (3,) 
    
    a-b  #array([10, 19, 28, 37])
    a*b  #array([  0,  20,  60, 120])
    b/a  #array([0.        , 0.05      , 0.06666667, 0.075     ])
    
    sum(a)  #100
    sin(a)  # array([-0.54402111,  0.91294525, -0.98803162,  0.74511316])
    np.sin(a)  # array([-0.54402111,  0.91294525, -0.98803162,  0.74511316])
    cos(a)  #array([-0.83907153,  0.40808206,  0.15425145, -0.66693806])
    tan(a)  #array([ 0.64836083,  2.23716094, -6.4053312 , -1.11721493])

    二、多维矩阵的乘法

    矩阵的乘法,A(m*n)*B(n*c),其中A的列数=B的行数,生成一个m*c的C矩阵,C[0,0]=A[0,0]*B[0,0]+A[0,1]*B[1,0],C[0,1]=A[0,0]*B[0,1]+A[0,1]*B[1,1]

    import  numpy as np
    a=np.array([[1,1],
                [0,1]])
    b=np.arange(4).reshape((2,2))
    a*b#两个同型矩阵对应元素的乘积
    np.dot(a,b)#矩阵的乘法运算
    a.dot(b) #矩阵ab的乘积
    '''
    array([[0, 1],
           [0, 3]])
    array([[2, 4],
           [2, 3]])
    array([[2, 4],
           [2, 3]])
    '''

    写成函数就是这样的了

    def array_dot(a,b):
        m,n=shape(a)
        j,k=shape(b)
        c=ones(m*k).reshape(m,k)
        if n!=j:
            return
        else:
            for i in range(m):
                for l in range(k):
                    c[i,l]=sum(a[i]*b[:,l])
        return c

    三、多维矩阵行列运算

    import  numpy as np     
    a=np.array([[1,2,3],[2,3,4]])
    
    a.sum()
    a.max()
    a.sum(axis=1)  #array([6, 9])
    a.sum(axis=0)  # array([3, 5, 7])

    四、矩阵的索引运算

    argmin() 和 argmax() 两个函数分别对应着求矩阵中最小元素和最大元素的索引

    import  numpy as np      
    A=np.arange(2,14).reshape
    print(A)                 
    print(np.argmin(A))  #0  
    print(np.argmax(A))  #11 
    print(np.mean(A))  # 均值7.5 
    print(A.mean())    #均值 7.5  
    print(np.average(A))# 均值7.5
    print(np.median(A))  #中位数7.5    
    print(np.cumsum(A)) # 累加[ 2  5  9 14 20 27 35 44 54 65 77 90]
    print(np.diff(A))#下面显示
    #将所有非零元素的行与列坐标分割开,重构成两个分别关于行和列的矩阵
    print(np.nonzero(A))   

    五、矩阵转置

    import  numpy as np
    A=np.arange(1,10).reshape(3,3)
    A
    #transpose
    print(np.transpose(A))
    #T
    print(A.T)
    
    '''
    [[1 2 3]
    [4 5 6]
    [7 8 9]]
    [[1 4 7]
    [2 5 8]
    [3 6 9]]
    [[1 4 7]
    [2 5 8]
    [3 6 9]]
    '''

    六、矩阵截取clip

    import numpy as np
    a=np.arange(1,13).reshape((3,4))
    print(a)
    print(np.clip(a,5,9))#最小5,最大9,小于5的都成了5,大于9的都成了9
    
    '''
    输出结果
    [[ 1 2 3 4]
    [ 5 6 7 8]
    [ 9 10 11 12]]
    [[5 5 5 5]
    [5 6 7 8]
    [9 9 9 9]]
    '''
  • 相关阅读:
    (SPOJ4)Transform the Expression
    Minix2.0操作系统kernel文件分析
    Minix2.0内核源代码的组织结构
    powerdesigner教程系列(三)
    多线程
    软件架构师成长之路
    保护sqlconnection的链接字符串中的密码不泄露
    powerdesigner教程系列(四)
    [Serializable]在C#中的作用.NET 中的对象序列化
    vps经典文章
  • 原文地址:https://www.cnblogs.com/cgmcoding/p/13454132.html
Copyright © 2011-2022 走看看