美文网首页
python中的矩阵和数组乘法

python中的矩阵和数组乘法

作者: 不分享的知识毫无意义 | 来源:发表于2019-10-18 17:54 被阅读0次

    1.概念部分

      首先请进来的同学们领取我们常说的概念,网上有很多纷纷繁繁复杂的说法,搞得我头晕眼花,然后每个人说的还不一样,我看一次懵逼一次,搞得我好被动,我这里整理一下最权威的概念,以后也好自己反着看一下。

    • 矩阵乘
        这个概念最不容易被误解了,矩阵乘就是我们线性代数里说的矩阵乘法,说起来就是一个[m,n]维的矩阵可以和一个[n,m]维的矩阵相乘,最终得到的结果是[m,m]维。


      矩阵乘举例
    • 点乘
        点乘这个概念的理解关键在这个点上,就是一个点一个点的相乘,说的学术一点,就是对应位置相乘。


      点乘举例

        这两个概念理解起来不难,难的是各位同学用到numpy的时候,就会被各种乘法搞晕。下面进入关键阶段。

    2.向量乘法

      向量,在numpy里被叫做array,对应的乘法操作有*,matmul,multiply,dot。当然乘起来的效果是不一样的。

    • 普通乘法*
        对于array这个是点乘,就是对应位置乘法。
    a = np.arange(4).reshape(2,2)
    b = np.arange(4).reshape(2,2)
    a*b
    - 结果
    array([[0, 1],
           [4, 9]])
    
    • multiply
        这个函数翻译过来就是乘法,对于array来说和*是一样的,所以也是点乘就是对应位置乘。
    np.multiply(a,b)
    array([[0, 1],
           [4, 9]])
    
    • dot
        dot翻译是点,你可能误以为是点乘吧,其实不然,对于array,这个是矩阵乘法。
    np.dot(a,b)
    array([[ 2,  3],
           [ 6, 11]])
    
    • matmul
        这个想都不用想,就算是天王老子来了,今天这个也是矩阵乘,对于矩阵和数组都是矩阵乘。
    np.matmul(a,b)
    array([[ 2,  3],
           [ 6, 11]])
    
    • 总结
        敲黑板,这个一定要记住:
        对于数组而言,*和multiply属于点乘,而matmul和dot属于矩阵乘法,这里边注意这个dot,容易混淆视听。

    3.矩阵乘法

      矩阵,在numpy里被称作matrix,构造矩阵用mat,他的乘法规律和数组有点区别,还是拆解来看。

    • 普通乘法*
        思考一下,对于矩阵来说它的普通乘法就是矩阵乘,所以*表示的是矩阵乘,这个没问题。
    a = np.mat(np.arange(4).reshape(2,2))
    b = np.mat(np.arange(4).reshape(2,2))
    a*b
    matrix([[ 2,  3],
            [ 6, 11]])
    
    • multiply
        这个和数组就不一样了,这个乘法在矩阵里是点乘的意思。
    np.multiply(a,b)
    matrix([[0, 1],
            [4, 9]])
    
    • dot
        这个也是矩阵乘,这个dot真是过分啊,取个点的名字,结果全是矩阵乘法。
    np.dot(a,b)
    matrix([[ 2,  3],
            [ 6, 11]])
    
    • matmul
      这个函数取名都叫矩阵乘了,放在矩阵里肯定是矩阵乘了,这个是按套路出牌的。
    np.matmul(a,b)
    matrix([[ 2,  3],
            [ 6, 11]])
    
    • 总结,对于numpy里的矩阵来说,弯弯道道比较小,只有multiply这个函数是元素乘,其他都是矩阵乘。

    4 向量和矩阵乘

    这个就是高级进阶操作了,有人说你干嘛这样,自然是有应用场景啊,有些算法里不同数据就是存储不一样,需要这么做更方便,我们也要学习一下它的规律。
    其实它的规律很简单,向量和矩阵乘法满足矩阵乘法的基本操作,也就是涉及到这两种类型的乘法,大家就按矩阵乘处理吧。

    写在最后

    向量和矩阵乘法都有一个维度的问题,就是相乘要满足一定的维度规律,这个不能违背。还有可以结合求解问题的实际情况用一些函数扩展矩阵和数组的维度,满足计算需要,这些都是算法的一些小技巧,平时大家遇到可以总结下。

    相关文章

      网友评论

          本文标题:python中的矩阵和数组乘法

          本文链接:https://www.haomeiwen.com/subject/gqfwmctx.html