zoukankan      html  css  js  c++  java
  • Numpy的学习2-基础运算1

    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])
    
    print(a,b)
    c=a-b
    print(c)
    '''
    [10 20 30 40] [0 1 2 3]
    [10 19 28 37]
    可以看到满足矩阵的减法运算,对应元素相减
    '''
    
    c=a*b   # array([  0,  20,  60, 120])#a,b对应元素相乘法
    c=b**2  # array([0, 1, 4, 9])       #每个元素对应2次方
    
    # 另外,Numpy中具有很多的数学函数工具,比如三角函数等,当我们需要对矩阵中每一项元素进行函数运算时,可以很简便的调用它们(以sin函数为例):
    c=10*np.sin(a)
    # array([-5.44021111,  9.12945251, -9.88031624,  7.4511316 ])
    
    # 除了函数应用外,在脚本中对print函数进行一些修改可以进行逻辑判断:
    # 如果想要执行是否相等的判断, 依然需要输入 == 而不是 = 来完成相应的逻辑判断。
    print(b<3)
    # array([ True,  True,  True, False], dtype=bool)
    
    '''
    上述运算均是建立在一维矩阵,即只有一行的矩阵上面的计算,如果我们想要对多行多维度的矩阵进行操作,需要对开始的脚本进行一些修改:
    '''
    
    a=np.array([[1,1],[0,1]])
    b=np.arange(4).reshape((2,2))
    
    print(a)
    # array([[1, 1],
    #       [0, 1]])
    
    print(b)
    # array([[0, 1],
    #       [2, 3]])
    
    # Numpy中的矩阵乘法分为两种, 其一是前文中的对应元素相乘,其二是标准的矩阵乘法运算,即对应行乘对应列得到相应元素:
    c_dot = np.dot(a,b) #可以看到np.dot就表示numpy中的矩阵想乘,这里要注意的是,矩阵相乘的元素必须是numpy中的数据元素
    c_dot_2 = a.dot(b) #另外的一种表示方式
    print(c_dot)
    # array([[2, 4],
    #       [2, 3]])
    
    
    # 来看看关于 sum(), min(), max()的使用:
    a=np.random.random((2,4))
    print(a)
    print(np.sum(a),np.min(a),np.max(a))
    
    '''
    如果你需要对行或者列进行查找运算,就需要在上述代码中为 axis 进行赋值。 
    当axis的值为0的时候,将会以列作为查找单元, 当axis的值为1的时候,将会以行作为查找单元。
    '''
    
    print("a =",a)
    # a = [[ 0.23651224  0.41900661  0.84869417  0.46456022]
    # [ 0.60771087  0.9043845   0.36603285  0.55746074]]
    print("sum =",np.sum(a,axis=1)) # sum = [ 1.96877324 2.43558896] 
    print("min =",np.min(a,axis=0)) # min = [ 0.23651224 0.41900661 0.36603285 0.46456022]
    print("max =",np.max(a,axis=1)) # max = [ 0.84869417 0.9043845 ]

      需要注意的是dot表示的是矩阵相乘,而*表示的的是对应元素相乘

      对于要对列或者行进行查找运算的时候(这是个需求,比如在RNN中,节点的Weight矩阵是分为输入数据和当前状态两个部分,有分开讨论的需求)

      加入axis=1表示以行为查找,axis为0表示以列为查找

            当不满足矩阵乘法的规则时候(shape不满足),运算会出问题,所以要认真检查shape

  • 相关阅读:
    小波变换的引入,通俗易懂
    Leetcode 437. Path Sum III
    Leetcode 113. Path Sum II
    Leetcode 112 Path Sum
    Leetcode 520 Detect Capital
    Leetcode 443 String Compression
    Leetcode 38 Count and Say
    python中的生成器(generator)总结
    python的random模块及加权随机算法的python实现
    leetcode 24. Swap Nodes in Pairs(链表)
  • 原文地址:https://www.cnblogs.com/simon-idea/p/9471551.html
Copyright © 2011-2022 走看看