精华内容
下载资源
问答
  • python矩阵乘法
    万次阅读 多人点赞
    2019-02-09 13:55:54

    python 矩阵乘法


    python 矩阵有两种形式:array 和 matrix 对象(它们的区别在这里就不说了),下面介绍相关乘法

    1. np.multiply

    对 array 和 matrix 对象的操作相同
    (1) a 和 b 维度相同
    都是每行对应元素相乘(即对应内积的第一步,不求和)

    >>> a = np.array([[1,2],[1,2]])
    >>> a*a
    >>> array([[1, 4],
           [1, 4]])
    

    (2)对于两个矩阵元素 a 和 b 维度不一的情况(array 和 matrix 对象都适用),则需将相应的行和列进行扩充,需要扩充的行或列的维度必须为 1。
    对列扩充则补 1, 对行扩充则将第一行复制到每一行。比如,a:3 * 1, b: 1 * 2,则 a 扩充为 3 * 2,b 扩充为 3 * 2。
    如下所示:

    >>> a = np.array([[1],[1],[1]])
    >>> b = np.array([1,2])
    >>> np.multiply(a, b)
    >>> array([[1, 2],
           [1, 2],
           [1, 2]])
    

    (3)a 和 b为标量:则标量直接相乘

    2. *
    (1)对于 matrix 对象,代表矩阵乘法(维度必须满足相应规则);
    (2)对于array对象,则是每行对应元素相乘。当 array 对象的 shape 不同时(matrix 对象不行) ,其规则和 np.multiply 一样;

    3. np.matmul
    该函数对 array 和 matrix 对象的操作是不一样的。
    (1)对于 matrix 对象,对应矩阵乘法,对象维度必须满足矩阵乘法规则。
    (2)对于 array 对象,对应内积,但对象维度必须相同,不支持维度扩展。
    (3)不支持标量运算。

    在array 中,与 multiply 一样,每行对应元素相乘
    4. np.dot
    对于matrix 对象,对应矩阵乘法。
    对于两个 array 类型的元素:a,b,有如下可能:
    (1)a 和 b 都是一维 array,那么 dot 就是它们的内积(点乘);
    (2)a 和 b 都是二维 array,那么 dot 就是它们的矩阵乘积(即按矩阵乘法规则来计算),也可以用 matmul 或 a @ b;
    (3)如果a 和 b 都是标量(scalar),那么 dot 就是两个数的乘积,也可以用 multiply 或 a * b;
    (4)若 a:N * D,b:1 * D,那么 dot 为 a 的每一行和 b (只有一行)的 内积;

    >>>a = np.array([[1,2], [3, 4]])
    >>>b = np.array([1, 2])
    >>>np.dot(a, b)
    >>>array([ 5, 11])
    

    以上的总结并不完善,如果有错欢迎指出,谢谢。

    更多相关内容
  • python矩阵乘法

    2021-04-30 16:03:06
    python矩阵乘法,可以通过 NumPy 的np.dot()函数计算(乘积也称为点积)。 np.dot()接收两个NumPy数组作为参数,并返回数组的乘积。类似于数学中的两个矩阵相乘,A中每行的元素值与B中每列的元素值对应相乘再求和...

    原理:

    python中矩阵乘法,可以通过 NumPy 的np.dot()函数计算(乘积也称为点积)。
    np.dot()接收两个NumPy数组作为参数,并返回数组的乘积。类似于数学中的两个矩阵相乘,A中每行的元素值与B中每列的元素值对应相乘再求和,得到结果矩阵中一个元素值。
    其中A的维度为:(m,n),B的维度为:(n,c),则A,B相乘以后得到的矩阵C的维度为:(m,c)。

    注意
    1. A的列和B的行的维度必须保持一致,否则会报错。
    2. np.dot(A, B)和np.dot(B, A)的值可能不一样,操作数(A、 B)的顺序不同,结果也会不同。
    在这里插入图片描述

    python实现两个矩阵相乘:

    import numpy as np
    A = np.array([[1, 3, 5], [2, 4, 6]])
    print("A.shape=", A.shape) # 通过.shape可查看A的形状特征
    B = np.array([[1, 1], [2, 2], [3, 3]])
    print("B.shape=", B.shape)
    C = np.dot(A, B)
    print("C.shape=", C.shape,)
    print("C=", C)
    

    运行结果:

    在这里插入图片描述

    展开全文
  • python矩阵乘法小程序

    2018-12-04 10:49:10
    矩阵乘法用途广泛。该程序为本人编写。附有测试代码。请大家批评指正。
  • python矩阵乘法运算

    2022-07-21 21:00:04
    一、矩阵乘法 矩阵乘法为 A@B 或 np.dot(A,B) ,若为对应元素相乘则用 A*B 或 np.multiply(A,B) 。 1. A@B 和 np.dot(A,B) A = np.array([ [1,2], [3,4] ]) B = np.array([ [1,2], [3,4] ]) C1 = A @ B C2 = np.dot...

    一、矩阵乘法

    矩阵乘法为 A@Bnp.dot(A,B) ,若为对应元素相乘则用 A*Bnp.multiply(A,B)

    1. A@B 和 np.dot(A,B)

    A = np.array([
        [1,2],
        [3,4]
    ])
    
    B = np.array([
        [1,2],
        [3,4]
    ])
    
    C1 = A @ B
    C2 = np.dot(A,B)
    print(C1)
    print('---------')
    print(C2)
    

    输出为

    [[ 7 10]
     [15 22]]
    ---------
    [[ 7 10]
     [15 22]]
    

    2. A*B 或 np.multiply(A,B)

    A = np.array([
        [1,2],
        [3,4]
    ])
    
    B = np.array([
        [1,2],
        [3,4]
    ])
    
    C3 = A*B
    C4 = np.multiply(A,B)
    print(C3)
    print('---------')
    print(C4)
    

    输出为

    [[ 1  4]
     [ 9 16]]
    ---------
    [[ 1  4]
     [ 9 16]]
    

    二、邻接矩阵的相乘的意义

    1.定义

    假设存在一个N个节点的无向图。我们用 G[u][v] = G[v][u] = 1 表示从点 u 到点 v 有连边,否则 G[u][v] = G[v][u] = 0

    2.问题

    如果用这个图的邻接矩阵进行自乘会得到什么呢?

    3.理解

    模拟矩阵的运算有 G 2 [ u ] [ v ] = ∑ i = 1 n G [ u ] [ G^{2}[u][v] = {\textstyle \sum_{i=1}^{n}} G[u][ G2[u][v]=i=1nG[u][i ] ∗ G [ ]* G[ ]G[i ] [ v ] ][v] ][v]。也就是说 G 2 [ u ] [ v ] G^{2}[u][v] G2[u][v]图上点 u 到点 v 恰好经过两条边的路径的条数的矩阵。

    具体的解释为
    我们可以把原始邻接矩阵 G [ u ] [ v ] G[u][v] G[u][v] 看作为表示图上 u 到 v 恰好经过一条边的路径条数的矩阵。
    那么 G 2 [ u ] [ v ] = ∑ i = 1 n G [ u ] [ G^{2}[u][v] = {\textstyle \sum_{i=1}^{n}} G[u][ G2[u][v]=i=1nG[u][i ] ∗ G [ ]* G[ ]G[i ] [ v ] ][v] ][v] 显然就是运用了乘法原理与加法原理。

    类似的, G 3 [ u ] [ v ] G^{3}[u][v] G3[u][v] 表示什么意思呢?
    G 3 G^{3} G3 的计算过程 G 3 [ u ] [ v ] = ∑ i = 1 n G [ u ] [ G^{3}[u][v] = {\textstyle \sum_{i=1}^{n}} G[u][ G3[u][v]=i=1nG[u][i ] ∗ G [ ]* G[ ]G[i ] [ ][ ][j ] ∗ G [ ]*G[ ]G[j ] [ v ] ][v] ][v] 。同理可知其表示为 图上点 u 到点 v 恰好经过三条边的路径的条数 的矩阵。或者我们也可以将其看作 G 3 = G 2 ∗ G G^{3}=G^{2}*G G3=G2G,其本质是相同的。

    由上述不难发现该性质对于一般的正整数 k 都是成立的。即 G K [ u ] [ v ] G^{K}[u][v] GK[u][v] 表示图上 u 到 v 恰好经过k条边的路径条数的矩阵。也就是说如果需要在某个图上求 u 到 v 恰好经过 K 条边的路径的条数,我们完全可以使用矩阵快速幂来优化这个计算过程。

    4.代码实现

    邻接矩阵如下
    在这里插入图片描述
    代码如下

    import torch
    # 构建邻接矩阵
    a = [
        [0,1,1,1],
        [1,0,0,1],
        [1,0,0,1],
        [1,1,1,0]
    ]
    
    A = torch.tensor(a)
    A = torch.mm(A,A)
    print(A)
    

    输出结果如下

    tensor([[3, 1, 1, 2],
            [1, 2, 2, 1],
            [1, 2, 2, 1],
            [2, 1, 1, 3]])
    
    展开全文
  • Python 矩阵乘法的代码实现

    千次阅读 2022-03-13 15:38:20
    Python 矩阵乘法的代码实现

    求矩阵A*B,得到的结果C

    得到矩阵C

    A=[[1,1,1],[2,2,2],[3,3,3]]
    B=[[1,0,0],[0,1,0],[0,0,1]]
    c=[[0,0,0],[0,0,0],[0,0,0]]
    for i in range(3):
        for j in range(3):
            for k in range(3):
                c[i][j] += A[i][k]*B[k][j]
    

    输出矩阵C

    for i in range(3):
        for j in range(3):
            if (j+1)%3 == 0 and (i+1)%3 != 0:
                print(c[i][j],end=' ')
                print()
                continue
            print(c[i][j],end=' ')
            
        

     

    展开全文
  • Python的numpy矩阵乘法相关: 1.直接对array之间使用表示进行点乘,维度较低的array_x1最高纬度(设为n维)的数字,必须与纬度较高array_x2对应维度上的数字相同。x1和x2第i维度(i>n)的数字要不然相同,要不然...
  • PYTHON矩阵乘法.zip

    2021-04-14 19:57:45
    python实现矩阵乘法,适合初学者
  • python矩阵乘法_Python矩阵乘法

    千次阅读 2020-09-14 16:12:34
    python矩阵乘法Here you will get program for python matrix multiplication. 在这里,您将获得用于python矩阵乘法的程序。 If we want to multiple two matrices then it should satisfy one condition. We need...
  • python矩阵乘法函数实现

    千次阅读 2020-04-25 14:34:24
    #矩阵乘法 import numpy as np a=np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]],float) b=np.array([[0,1],[2,3],[4,5]],float) def fun(a,b): m,n,o=len(a),len(b[0]),len(b) #len(b[0]):b的列数 #len(b) :b的...
  • Python矩阵乘法在矩阵维数不一致的自动扩展(具体参见broadcast) - 对应元素相乘(a*b) 如下代码中,a为2*3矩阵,b为1*3矩阵,两者维数不同,进行对应元素相乘时需要先扩展a或b(也可能两者都要扩展) 扩展方法是...
  • python稀疏矩阵乘法

    2018-12-04 10:51:27
    稀疏矩阵是机器学习中的重要工具。本代码为自己编写。初学者,希望大家批评指正。
  • 主要介绍了python实现矩阵乘法的方法,实例分析了Python矩阵操作的相关技巧,需要的朋友可以参考下
  • Python Numpy矩阵乘法

    千次阅读 2020-09-15 18:41:23
    In this tutorial we will see python matrix multiplication using numpy ... 在本教程中,我们将看到使用numpy(Numerical Python)库的python矩阵乘法 。 For using numpy you must install it first on your...
  • 主要介绍了Python中的几种矩阵乘法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Python实现矩阵乘法

    千次阅读 2022-04-08 20:54:45
    ​ 问题 矩阵相信大家都知道,是线性代数中的知识,就是一系列数集。顾名思义,数字组成的矩形,例如: [1 2 3 4 5 67 8 9 1011 ] 现在,我们需要用python...矩阵乘法原理 要做矩阵的乘法,首先得搞清楚几点关于矩阵乘
  • 矩阵运算,矩阵乘法,矩阵转秩
  • 本文介绍了纯python进行矩阵的相乘运算的方法示例,分享给大家,具体如下: def matrixMultiply(A, B): # 获取A的行数和列数 A_row, A_col = shape(A) # 获取B的行数和列数 B_row, B_col = shape(B) # 不能...
  • python矩阵乘法

    2022-02-06 10:49:36
    计算两个矩阵乘法。n*m阶的矩阵A乘以m*k阶的矩阵B得到的矩阵C 是n*k阶的,且C[i][j] = A[i][0]*B[0][j] + A[i][1]*B[1][j] + …… +A[i][m-1]*B[m-1][j](C[i][j]表示C矩阵中第i行第j列元素)。 输入 第一行为n, m...
  • 一、关于python中的矩阵乘法,我们一般有两种数据格式可以实现:np.array()类型和np.mat()类型;对于这两种数据类型均有三种操作方式:(1)乘号 *(2)np.dot()(3)np.multiply()而这三种操作方式在操作这两种数据格式时...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,866
精华内容 11,146
关键字:

python矩阵乘法