精华内容
下载资源
问答
  • NumPy 矩阵乘法
    万次阅读 多人点赞
    2018-05-23 17:23:37

    NumPy 支持的几类矩阵乘法也很重要。

    元素级乘法

    你已看过了一些元素级乘法。你可以使用 multiply 函数或 * 运算符来实现。回顾一下,它看起来是这样的:

    m = np.array([[1,2,3],[4,5,6]])
    m
    # 显示以下结果:
    # array([[1, 2, 3],
    #        [4, 5, 6]])
    
    n = m * 0.25
    n
    # 显示以下结果:
    # array([[ 0.25,  0.5 ,  0.75],
    #        [ 1.  ,  1.25,  1.5 ]])
    
    m * n
    # 显示以下结果:
    # array([[ 0.25,  1.  ,  2.25],
    #        [ 4.  ,  6.25,  9.  ]])
    
    np.multiply(m, n)   # 相当于 m * n
    # 显示以下结果:
    # array([[ 0.25,  1.  ,  2.25],
    #        [ 4.  ,  6.25,  9.  ]])

    矩阵乘积

    要获得矩阵乘积,你可以使用 NumPy 的 matmul 函数。

    如果你有兼容的形状,那就像这样简单:

    a = np.array([[1,2,3,4],[5,6,7,8]])
    a
    # 显示以下结果:
    # array([[1, 2, 3, 4],
    #        [5, 6, 7, 8]])
    a.shape
    # 显示以下结果:
    # (2, 4)
    
    b = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
    b
    # 显示以下结果:
    # array([[ 1,  2,  3],
    #        [ 4,  5,  6],
    #        [ 7,  8,  9],
    #        [10, 11, 12]])
    b.shape
    # 显示以下结果:
    # (4, 3)
    
    c = np.matmul(a, b)
    c
    # 显示以下结果:
    # array([[ 70,  80,  90],
    #        [158, 184, 210]])
    c.shape
    # 显示以下结果:
    # (2, 3)

    如果你的矩阵具有不兼容的形状,则会出现以下错误:

    np.matmul(b, a)
    # 显示以下错误:
    # ValueError: shapes (4,3) and (2,4) not aligned: 3 (dim 1) != 2 (dim 0)

    NumPy 的 dot 函数

    有时候,在你以为要用 matmul 函数的地方,你可能会看到 NumPy 的 dot 函数。事实证明,如果矩阵是二维的,那么 dotmatmul 函数的结果是相同的。

    所以这两个结果是等价的:

    a = np.array([[1,2],[3,4]])
    a
    # 显示以下结果:
    # array([[1, 2],
    #        [3, 4]])
    
    np.dot(a,a)
    # 显示以下结果:
    # array([[ 7, 10],
    #        [15, 22]])
    
    a.dot(a)  # you can call你可以直接对 `ndarray` 调用 `dot` 
    # 显示以下结果:
    # array([[ 7, 10],
    #        [15, 22]])
    
    np.matmul(a,a)
    # array([[ 7, 10],
    #        [15, 22]])

    虽然这两个函数对于二维数据返回相同的结果,但在用于其他数据形状时,你应该谨慎选择。你可以在 matmuldot 文档中详细了解它们的差异,并找到其他 NumPy 函数的链接。

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

    2022-04-15 12:08:28
    NumPy矩阵乘法 矩阵乘法是将两个矩阵作为输入值,并将 A 矩阵的行与 B 矩阵的列对应位置相乘再相加,从而生成一个新矩阵,如下图所示: 注意:必须确保第一个矩阵中的行数等于第二个矩阵中的列数,否则不能进行矩阵...

    NumPy矩阵乘法

    矩阵乘法是将两个矩阵作为输入值,并将 A 矩阵的行与 B 矩阵的列对应位置相乘再相加,从而生成一个新矩阵,如下图所示:
    注意:必须确保第一个矩阵中的行数等于第二个矩阵中的列数,否则不能进行矩阵乘法运算。

    矩阵乘法

    图1:矩阵乘法

    矩阵乘法运算被称为向量化操作,向量化的主要目的是减少使用的 for 循环次数或者根本不使用。这样做的目的是为了加速程序的计算。

    下面介绍 NumPy 提供的三种矩阵乘法,从而进一步加深对矩阵乘法的理解。

    逐元素矩阵乘法

    multiple() 函数用于两个矩阵的逐元素乘法,示例如下:

    import numpy as np 
    array1=np.array([[1,2,3],[4,5,6],[7,8,9]],ndmin=3) 
    array2=np.array([[9,8,7],[6,5,4],[3,2,1]],ndmin=3) 
    result=np.multiply(array1,array2) 
    result  
    

    输出结果:

    array([[[ 9, 16, 21],
             [24, 25, 24],
             [21, 16,  9]]])
    

    矩阵乘积运算

    matmul() 用于计算两个数组的矩阵乘积。示例如下:

    import numpy as np 
    array1=np.array([[1,2,3],[4,5,6],[7,8,9]],ndmin=3) 
    array2=np.array([[9,8,7],[6,5,4],[3,2,1]],ndmin=3) 
    result=np.matmul(array1,array2) 
    print(result) 
    

    输出结果:

    数组([[[
             [30,24,18],
             [84,69,54 ],[138,114,90]]])
    

    矩阵点积

    dot() 函数用于计算两个矩阵的点积。如下所示:

    示例如下:

    import numpy as np 
    array1=np.array([[1,2,3],[4,5,6],[7,8,9]],ndmin=3) 
    array2=np.array([[9,8,7],[6,5,4],[3,2,1]],ndmin=3) 
    result=np.dot(array1,array2) 
    print(result)  
    

    输出结果:

    array([[[[ 30,  24,  18]],
             [[ 84,  69,  54]],
             [[138, 114,  90]]]])
    
    展开全文
  • numpy矩阵乘法_NumPy矩阵乘法

    千次阅读 2020-07-13 11:24:52
    numpy 矩阵乘法NumPy matrix multiplication can be ... NumPy矩阵乘法可以通过以下三种方法完成。 multiply(): element-wise matrix multiplication. multiple():逐元素矩阵乘法。 matmul(): matrix product o...

    numpy矩阵乘法

    NumPy matrix multiplication can be done by the following three methods.

    NumPy矩阵乘法可以通过以下三种方法完成。

    1. multiply(): element-wise matrix multiplication.

      multiple():逐元素矩阵乘法。
    2. matmul(): matrix product of two arrays.

      matmul():两个数组的矩阵乘积。
    3. dot(): dot product of two arrays.

      dot():两个数组的点积。

    1. NumPy矩阵乘法元素明智 (1. NumPy Matrix Multiplication Element Wise)

    If you want element-wise matrix multiplication, you can use multiply() function.

    如果要逐元素矩阵相乘,可以使用multiple()函数。

    import numpy as np
    
    arr1 = np.array([[1, 2],
                     [3, 4]])
    arr2 = np.array([[5, 6],
                     [7, 8]])
    
    arr_result = np.multiply(arr1, arr2)
    
    print(arr_result)

    Output:

    输出:

    [[ 5 12]
     [21 32]]

    The below image shows the multiplication operation performed to get the result matrix.

    下图显示了为获得结果矩阵而执行的乘法运算。

    Numpy Matrix Multiply

    Numpy Matrix multiply()

    numpy矩阵乘法()

    2.两个NumPy阵列的矩阵乘积 (2. Matrix Product of Two NumPy Arrays)

    If you want the matrix product of two arrays, use matmul() function.

    如果要两个数组的矩阵乘积,请使用matmul()函数。

    import numpy as np
    
    arr1 = np.array([[1, 2],
                     [3, 4]])
    arr2 = np.array([[5, 6],
                     [7, 8]])
    
    arr_result = np.matmul(arr1, arr2)
    
    print(f'Matrix Product of arr1 and arr2 is:\n{arr_result}')
    
    arr_result = np.matmul(arr2, arr1)
    
    print(f'Matrix Product of arr2 and arr1 is:\n{arr_result}')

    Output:

    输出:

    Matrix Product of arr1 and arr2 is:
    [[19 22]
     [43 50]]
    Matrix Product of arr2 and arr1 is:
    [[23 34]
     [31 46]]

    The below diagram explains the matrix product operations for every index in the result array. For simplicity, take the row from the first array and the column from the second array for each index. Then multiply the corresponding elements and then add them to reach the matrix product value.

    下图说明了结果数组中每个索引的矩阵乘积运算。 为简单起见,为每个索引取第一个数组的行和第二个数组的列。 然后乘以相应的元素,然后将它们相加以达到矩阵乘积值。

    Numpy Matrix Product

    Numpy Matrix Product

    块状矩阵产品

    The matrix product of two arrays depends on the argument position. So matmul(A, B) might be different from matmul(B, A).

    两个数组的矩阵乘积取决于参数位置。 因此,matmul(A,B)可能与matmul(B,A)不同。

    3.两个NumPy阵列的点积 (3. Dot Product of Two NumPy Arrays)

    The numpy dot() function returns the dot product of two arrays. The result is the same as the matmul() function for one-dimensional and two-dimensional arrays.

    numpy dot()函数返回两个数组的点积。 结果与一维和二维数组的matmul()函数相同。

    import numpy as np
    
    arr1 = np.array([[1, 2],
                     [3, 4]])
    arr2 = np.array([[5, 6],
                     [7, 8]])
    
    arr_result = np.dot(arr1, arr2)
    
    print(f'Dot Product of arr1 and arr2 is:\n{arr_result}')
    
    arr_result = np.dot(arr2, arr1)
    
    print(f'Dot Product of arr2 and arr1 is:\n{arr_result}')
    
    arr_result = np.dot([1, 2], [5, 6])
    print(f'Dot Product of two 1-D arrays is:\n{arr_result}')

    Output:

    输出:

    Dot Product of arr1 and arr2 is:
    [[19 22]
     [43 50]]
    Dot Product of arr2 and arr1 is:
    [[23 34]
     [31 46]]
    Dot Product of two 1-D arrays is:
    17

    参考资料 (References)

    翻译自: https://www.journaldev.com/32966/numpy-matrix-multiplication

    numpy矩阵乘法

    展开全文
  • 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...

    In this tutorial we will see python matrix multiplication using numpy (Numerical Python) library.

    在本教程中,我们将看到使用numpy(Numerical Python)库的python矩阵乘法

    For using numpy you must install it first on your computer, you can use package manager like pip for installing numpy.

    要使用numpy,必须先将其安装在计算机上,然后可以使用软件包管理器(如pip)安装numpy。

    Numpy provide array data structure which is almost the same as python list but have faster access for reading and writing resulting in better performance. We will use numpy arrays to represent matrices.

    Numpy提供的数组数据结构与python列表几乎相同,但具有更快的读写访问权限,从而提高了性能。 我们将使用numpy数组来表示矩阵。

    To perform matrix multiplication of matrices a and b , the number of columns in a must be equal to the number of rows in b otherwise we cannot perform matrix multiplication.

    为了执行矩阵AB的矩阵乘法, 列数必须等于b中的行否则就不能执行矩阵乘法的数量。

    We must check this condition otherwise we will face runtime error.

    我们必须检查这种情况,否则我们将面临运行时错误。

    There is * operator for numpy arrays but that operator will not do matrix multiplication instead it will multiply the matrices element by element.

    numpy数组有*运算符,但该运算符不会进行矩阵乘法,而是将矩阵元素逐元素相乘。

    Here is an example with * operator:

    这是带有*运算符的示例:

    # Import numpy 
    import numpy as np
     
    def printMatrix(a):
        
        # Printing matrix
        for i in range(0,len(a)):
            for j in range(0,len(a[0])):
                print(a[i][j],end = " ")
            print()
     
    def main():
        
        # Declaring our matrices using arrays in numpy
        a = np.array([[1,2,3],[3,4,5],[5,6,7]])
        b = np.array([[1,2,3]])
        
        print("Matrix a :")
        printMatrix(a)
        print()
        
        print("Matrix b : ")
        printMatrix(b)
        print()
        
        # Using * operator to multiply
        c = a*b
        
        # Printing Result
        print("Result of a*b : ")
        printMatrix(c)
     
    main()

    Output:

    输出:

    Matrix a : 1 2 3 3 4 5 5 6 7

    矩阵a: 1 2 3 3 4 5 5 6 7

    Matrix b : 1 2 3

    矩阵b: 1 2 3

    Result of a*b : 1 4 9 3 8 15 5 12 21

    a * b的结果: 1 4 9 3 8 15 5 12 21

    Python Numpy矩阵乘法 (Python Numpy Matrix Multiplication)

    We can see in above program the matrices are multiplied element by element. So for doing a matrix multiplication we will be using the dot function in numpy.

    我们可以在上面的程序中看到矩阵乘以一个元素。 因此,为了进行矩阵乘法,我们将在numpy中使用点函数。

    We can either write

    我们可以写

    • np.dot(a,b)

      np.dot(a,b)
    • a.dot(b)

      点(b)

    for matrix multiplication here is the code:

    对于矩阵乘法,下面是代码:

    # Import numpy 
    import numpy as np
     
    def printMatrix(a):
        
        # Printing matrix
        for i in range(0,len(a)):
            for j in range(0,len(a[0])):
                print(a[i][j],end = " ")
            print()
        
        
     
    def main():
        
        # Taking rows and columns of a 
        m = int(input("Enter rows in a : "))
        n = int(input("Enter columns in a : "))
        
        # Taking rows and columns of b
        p = int(input("Enter rows in b : "))
        q = int(input("Enter columns in b : "))
        
        # Checking necessary condition for matrix multiplication
        if n!= p:
            print("Number of columns in b must be equal to rows in b")
            exit()
        
        # Initializing a and b list
        a = [ [0 for i in range(0,n)] for j in range(0,m) ]
        b = [ [0 for i in range(0,q)] for j in range(0,p) ]
        
        # Taking input list a
        print("Enter matrix a : ")
        for i in range(0,m):
            for j in range(0,n):
                a[i][j] = int(input("Enter element a[" + str(i) + "][" + str(j) + "] : "))
        
        # Taking input list b
        print("Enter matrix b : ")
        for i in range(0,p):
            for j in range(0,q):
                b[i][j] = int(input("Enter element b[" + str(i) + "][" + str(j) + "] : "))
        
        
        # Converting python list in numpy array
        a = np.array(a)
        b = np.array(b)
        
        print("Matrix a :")
        printMatrix(a)
        print()
        
        print("Matrix b : ")
        printMatrix(b)
        print()
        
        # Using dot operator to multiply
        c = a.dot(b)
        
        # Printing Result
        print("Result of a*b : ")
        printMatrix(c)
     
     
    main()

    Output:

    输出:

    Enter rows in a : 2 Enter columns in a : 3 Enter rows in b : 3 Enter columns in b : 2 Enter matrix a : Enter element a[0][0] : 2 Enter element a[0][1] : 3 Enter element a[0][2] : 4 Enter element a[1][0] : 1 Enter element a[1][1] : 2 Enter element a[1][2] : 3 Enter matrix b : Enter element b[0][0] : 4 Enter element b[0][1] : 5 Enter element b[1][0] : 1 Enter element b[1][1] : 6 Enter element b[2][0] : 9 Enter element b[2][1] : 7 Matrix a : 2 3 4 1 2 3

    输入a中的行:2 输入a中的列:3 输入b中的行:3 输入b中的列:2 输入矩阵a: 输入元素a [0] [0]:2 输入元素a [0] [1]:3 输入元素a [0] [2]:4 输入元素a [1] [0]:1 输入元素a [1] [1]:2 输入元素a [1] [2]:3 输入矩阵b: 输入元素b [0] [0]:4 输入元素b [0] [1]:5 输入元素b [1] [0]:1 输入元素b [1] [1]:6 输入元素b [2] [0 ]:9 输入元素b [2] [1]:7 矩阵a: 2 3 4 1 2 3

    Matrix b : 4 5 1 6 9 7

    矩阵b: 4 5 1 6 9 7

    Result of a*b : 47 56 33 38

    a * b的结果: 47 56 33 38

    Here the output is different because of the dot operator. Alternatively we can use the numpy matrices method to first convert the arrays into matrices and then use * operator to do matrix multiplication as below:

    由于点运算符,此处的输出是不同的。 或者,我们可以使用numpy矩阵方法首先将数组转换为矩阵,然后使用*运算符进行矩阵乘法,如下所示:

    # Using * operator to multiply
    c = np.matrix(a)*np.matrix(b)

    Comment below if you have any queries related to python numpy matrix multiplication.

    如果您有任何有关python numpy矩阵乘法的查询,请在下面评论。

    翻译自: https://www.thecrazyprogrammer.com/2019/08/python-numpy-matrix-multiplication.html

    展开全文
  • 矩阵乘法是通过将两个矩阵作为输入并将第一矩阵的行与第二矩阵的列相乘来生成单个矩阵的操作。注意, 我们必须确保第一个矩阵中的行数应等于第二个矩阵中的列数。...这是我们可以执行numpy矩阵乘法的...
  • 1. 问题ndarray 是 NumPy 的基础元素,NumPy 又主要是用来进行矩阵运算的。那么具体来说,ndarray 是如何进行普通矩阵运算的呢?2. 分析首先,在矩阵用 +-*/ 这些常规操作符操作的时候,是对元素进行操作。这和其他...
  • 关注微信公众号:一个数据人的自留地作者介绍知乎@王多鱼百度的一...对于数据分析师来说,应掌握基础语法和数据科学的模块,主要包括:pandas、numpy和机器学习库sklearn等。对于算法工程师来说,还应掌握深度学习相...
  • 广义的矩阵的矩阵乘法包括:矩阵相乘,矩阵点乘,向量乘法与向量点乘...矩阵乘法:MATLAB下的矩阵乘法a*b,在python下是numpy.dot(a,b)很明显,a的列数必须等于b的行数,因为这个是矩阵的运算。2.矩阵(向量)点乘MAT...
  • numpy 矩阵乘法

    2020-03-09 20:26:38
    https://www.jianshu.com/p/42b0b6ffcf97
  • numpy矩阵乘法中的multiply,matmul和dot

    千次阅读 2020-02-22 01:19:13
    numpy做矩阵运算时,少不了用到矩阵乘法。本文帮你迅速区分multiply, matmul和dot的区别。 numpy官方文档中的说明:(想深入了解可以一戳) multiply:...
  • Numpy矩阵乘法

    2020-06-02 08:08:00
    Numpy矩阵乘法 一维数组和一维数组 一维数组和一维数组点积运算得到一个数值 一维数组和二维数组、 一维数组和一维数组点积运算得到一维数组 多维数组
  • numpy矩阵乘法中遇到的问题

    千次阅读 2018-05-15 08:47:24
    一、* 到底是怎么回事 我们先来看一下问题出在哪以前没有深入接触过、计算过矩阵。一个 1 * 2 矩阵和 6 * 1 矩阵“ *” 运算,得到了一个6 * 2 矩阵,感觉这不科学啊??那么问题出在哪呢?一言蔽之,“*”运算要...
  • a = np.random.randn(4, 3) # a.shape = (4, 3) b = np.random.randn(3, 2) # b....经过查阅资料,发现Numpy矩阵乘法需要使用.dot()或者.matmul import numpy as np a = np.random.randn(4, 3) # a.shape = ...
  • 分类: 元素相乘:multply() 矩阵相乘:dot()、matmul()、’@’ ...import numpy as np 在数组上操作的效果: a1 = np.array([[1,2,3],[4,5,6]]) b1 = np.array([1,2,3]) print(a1 * b1) # 对应元素相乘...
  • 哈,只需一行即可完成:np.einsum('nmk,nkj->mj',A,B)。在不要将变量命名为sum,而是重写sum中的内部版本。在正如@Jaime指出的,对于这些尺寸的维度,循环实际上更快。事实上,基于map和sum的解决方案虽然更简单...
  • 一、numpy生成的array对象,在使用*和np.multiply时,是接的两者对象对应位置相乘。 1、矩阵*乘列向量 a=np.array([[1,2],[3,4]]) a array([[1, 2], [3, 4]]) b=np.array([[2],[3]]) b array([[2], [3]]) a*b ...
  • 前言 在完成作业的过程中,对multiply函数、*运算符号、dot函数的功能经常混淆。...import numpy as np m = np.array([[1, 2, 3], [4, 5, 6]]) n = np.array([[1, 2, 3], [4, 5, 6]]) print("矩阵m:
  • numpy和pytorch矩阵乘法

    2021-10-30 15:36:54
    本文目录一、numpy矩阵乘法 numpy官方文档 pytorch官方文档 一、numpy矩阵乘法 numpy.dot(a, b, out=None) 当两个数据均为一维的时候,结果是内积,等效于np.matmul or a@b。当两个数据均为二维的时候,结果是...
  • numpy矩阵乘法

    2020-03-28 11:51:50
    在Python的 Numpy模块中有很多关于矩阵乘法的方法,其中重点是 矩阵的点乘和叉乘,需要区分出来。 矩阵的点乘 就是矩阵各个对应元素相乘, 这个时候要求两个矩阵必须同样大小 在 numpy 模块中 矩阵点乘是通过 ...
  • Numpy高效大矩阵乘法

    2020-12-10 05:41:12
    在下面是测试大矩阵乘法的示例代码:import numpy as npimport timerows= 10000 # it can be large for example 1kkcols= 1000#create some data in memorydata = np.arange(rows*cols, dtype='float32')data....
  • 想要实现线性代数中讲过的矩阵乘法,即符合矩阵相乘的两个矩阵需要满足条件:第一个矩阵的列数等于第二个矩阵的行数。使用numpy的库函数:np.matmul。如果参与matmul运算的两个矩阵尺寸不满足上述条件则会报错 a = ...
  • numpy矩阵乘法问题

    2019-07-16 08:38:32
    dot或者matmul表示矩阵相乘; multiply或者*表示矩阵...import numpy as np # a = torch.randn(2, 3, 4) # b = torch.randn(4, 4) # c = torch.matmul(a, b) # print(c) # print(c.size()) a = np.arange(0, 9).re...
  • 本文介绍了 Numpy 库支持的三种矩阵乘法
  • NumPy矩阵乘法与点乘

    千次阅读 2020-02-11 16:47:02
    1. Numpy.dot() 一维矩阵:计算内积 dot( 1 x n , 1 x n ) = 一个数 二维矩阵:线性代数矩阵相乘(n x m)·(m x s) dot( n x m , m x s ) = n x s import numpy as np # 1. 一维矩阵:计算内积 # 1 x 3 one...
  • 最近在熟悉python的...1、矩阵乘法 np.dot(a,b),但a,b都为一维矩阵的时候,.dot实现内积,不用考虑a,b具体是行向量还是列向量,也就是说,a,b同为行向量仍然可以计算 a.dot(b) a@b 2、各个元素相乘 a*b ...
  • numpy的5种乘法: :矩阵中的数据连乘(np.prod) :逐元素相乘(*) :矩阵乘(dot) :叉乘(np.cross) :外乘(np.outer) 代码: ################### l1 = [[1, 2, 3], [4, 5, 6]] l2 = np.array(l1) for i in...
  • Numpy中两大重要类型array类型(N维数组ndarray)和矩阵类型matrix是很多基于Numpy数值计算的基础,因此搞清楚两者的关系是相当重要的, 特别是程序中混杂了这两种类型,还夹带着一些加减乘除的运算,那简直有一种剪...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,969
精华内容 7,987
关键字:

numpy 矩阵乘法

友情链接: DDS_PHASE.rar