精华内容
下载资源
问答
  • 1.以示例说明矩阵乘法与广播类逐元素相乘的区别 示例矩阵和列向量 m=[123456789],v=[102030] m= \begin{bmatrix} 1\quad2\quad3 \\ 4\quad5\quad6 \\ 7\quad8\quad9 \\ \end{bmatrix}, v=\begin{bmatrix} 10 \\ 20 \...

    本文主要说明numpy模块中两种乘法使用的符号@和*,并未对广播原则进行详细介绍。

    1.以示例说明矩阵乘法与广播类逐元素相乘的区别

    示例矩阵和列向量
    m = [ 1 2 3 4 5 6 7 8 9 ] , v = [ 10 20 30 ] m= \begin{bmatrix} 1\quad2\quad3 \\ 4\quad5\quad6 \\ 7\quad8\quad9 \\ \end{bmatrix}, v=\begin{bmatrix} 10 \\ 20 \\ 30 \end{bmatrix} m=123456789,v=102030
    【1】矩阵乘法
    m m m v v v相乘为
    [ 1 ∗ 10 + 2 ∗ 20 + 3 ∗ 30 4 ∗ 10 + 5 ∗ 20 + 6 ∗ 30 7 ∗ 10 + 8 ∗ 20 + 9 ∗ 30 ] = [ 10 + 40 + 90 40 + 100 + 180 70 + 160 + 270 ] = [ 140 320 500 ] \begin{bmatrix} 1*10+2*20+3*30 \\ 4*10+5*20+6*30 \\ 7*10+8*20+9*30 \end{bmatrix} =\begin{bmatrix} 10+40+90 \\ 40+100+180 \\ 70+160+270 \end{bmatrix} =\begin{bmatrix} 140 \\ 320 \\ 500 \end{bmatrix} 110+220+330410+520+630710+820+930=10+40+9040+100+18070+160+270=140320500
    【2】广播类逐元素相乘
    m m m v v v相乘为
    [ 1 ∗ 10 2 ∗ 10 3 ∗ 10 4 ∗ 20 5 ∗ 20 6 ∗ 20 7 ∗ 30 8 ∗ 30 9 ∗ 30 ] = [ 10 20 30 80 100 120 210 240 270 ] \begin{bmatrix} 1*10&2*10&3*10 \\ 4*20&5*20&6*20 \\ 7*30&8*30&9*30 \end{bmatrix}= \begin{bmatrix} 10&20&30 \\ 80&100&120\\ 210&240&270 \end{bmatrix} 110420730210520830310620930=10802102010024030120270

    2.numpy模块调用流程
    In [1]: import numpy as np
    In [2]: m = np.array([[1,2,3],[4,5,6],[7,8,9]])
    In [3]: v = np.array([[10],[20],[30]])
    
    # 【1】矩阵乘法
    In [4]: m @ v
    Out[4]: array([[140],
           [320],
           [500]])
    
    # 【2】广播类逐元素相乘
    In [5]: m * v
    Out[5]: array([[ 10,  20,  30],
           [ 80, 100, 120],
           [210, 240, 270]])      
    

    【说明】

    1. numpy模块中矩阵乘法使用符合@
    2. 广播类逐元素相乘结果矩阵的shape与shape最大矩阵保持一致
      先将 v v v扩展为 [ 10 10 10 20 20 20 30 30 30 ] \begin{bmatrix}10&10&10\\20&20&20\\30&30&30\end{bmatrix} 102030102030102030,shape与 m m m保持一致,然后再与 m m m进行逐元素的相乘。详细可参照numpy模块广播的原则。
    展开全文
  • 矩阵运算基础知识参考:矩阵的运算及其规则 1) matrix multiplication 矩阵乘法: (m,n) x (n,p) –> (m,p) # 矩阵乘法运算前提:矩阵1的列=矩阵2的行 3种用法: np.dot(matrix_a, ...

    矩阵运算基础知识参考:矩阵的运算及其规则


    • 注意区分数组和矩阵的乘法运算表示方法(详见第三点代码)

    1) matrix multiplication

    矩阵乘法: (m,n) x (n,p) --> (m,p) # 矩阵乘法运算前提:矩阵1的列=矩阵2的行
    3种用法: np.dot(matrix_a, matrix_b) == matrix_a @ matrix_b == matrix_a * matrix_b

    2) element-wise product : 矩阵对应元素相乘

    1种用法:np.multiply(matrix_c, matrix_d)
    对于nd.array()类型而言,数组 arrA * arrB 只能element-wise produt(对应元素相乘)

    # -*- coding: utf-8 -*-
    """
    Created on Thu Jul 26 14:22:40 2018
    
    @author: Administrator
    """
    
    import numpy as np
    
    a = np.array([[1,2],[3,4],[11,12]])
    b = np.array([[5,6,13],[7,8,14]])
    c = np.array([[1,2,13],[3,4,25],[11,12,23]])
    d = np.array([[5,6,2],[7,8,29],[13,14,15]])
    
    matrix_a = np.matrix(a)         # (3,2)
    matrix_b = np.matrix(b)         # (2,3)
    matrix_c = np.matrix(c)         # (3,3)
    matrix_d = np.matrix(d)         # (3,3)
    
    print(type(a),type(matrix_a))  # <class 'numpy.ndarray'> <class 'numpy.matrixlib.defmatrix.matrix'>
    mat_a = np.mat(a)
    print(type(a),type(matrix_a))  # <class 'numpy.ndarray'> <class 'numpy.matrixlib.defmatrix.matrix'>
    
    
    
    '''
    # 1) matrix multiplication
    矩阵乘法: (m,n) x (n,p) --> (m,p)    # 矩阵乘法运算前提:矩阵1的列=矩阵2的行
    3种用法: np.dot(matrix_a, matrix_b) == matrix_a @ matrix_b == matrix_a * matrix_b
    '''
    method_1 = matrix_a @ matrix_b
    method_2 = np.dot(matrix_a, matrix_b)
    
    print(method_1)
    #[[ 19  22  41]
    # [ 43  50  95]
    # [139 162 311]]
    print(method_2 == method_1)
    #[[ True  True  True]
    # [ True  True  True]
    # [ True  True  True]]
    print(matrix_c * matrix_d == matrix_c @ matrix_d)
    #[[ True  True  True]
    # [ True  True  True]
    # [ True  True  True]]
    
    
    '''
    # 2) element-wise product : 矩阵对应元素相乘
    1种用法:np.multiply(matrix_c, matrix_d)
    对于nd.array()类型而言,数组 arrA * arrB 只能element-wise produt(对应元素相乘) 
    '''
    print(matrix_c, matrix_d, sep='\n')
    #[[ 1  2 13]
    # [ 3  4 25]
    # [11 12 23]]
    #[[ 5  6  2]
    # [ 7  8 29]
    # [13 14 15]]
    
    method_1 = np.multiply(matrix_c, matrix_d)      # 对应位置元素相乘
    
    print(method_1)
    #[[  5  12  26]
    # [ 21  32 725]
    # [143 168 345]]
    

    3) 矩阵乘法和数组乘法

    在这里插入图片描述

    展开全文
  • (矩阵的创建,numpy,应元素相乘)具有不错的参考意义,希望能够帮助到大家! 部分代码用图片方式呈现出来,方便各位观看与收藏! 提示: python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要...

    前言:

    今天为大家带来的内容是,总结python的常见矩阵运算!(矩阵的创建,numpy,应元素相乘)具有不错的参考意义,希望能够帮助到大家!

    部分代码用图片方式呈现出来,方便各位观看与收藏!

    提示:

    python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包。

    一.numpy的导入和使用

    from numpy import *;#导入numpy的库函数
    import numpy as np; #这个方式使用numpy的函数时,需要以np.开头。
    

    二.矩阵的创建

    由一维或二维数据创建矩阵

    from numpy import *;
    a1=array([1,2,3]);
    a1=mat(a1);
    

    创建常见的矩阵

    总结python的常见矩阵运算!(矩阵的创建,numpy,应元素相乘)

     

    三.常见的矩阵运算

    1. 矩阵相乘

    a1=mat([1,2]); 
    a2=mat([[1],[2]]);
    a3=a1*a2;
    #1*2的矩阵乘以2*1的矩阵,得到1*1的矩阵
    

    2. 矩阵点乘

    矩阵对应元素相乘

    a1=mat([1,1]);
    a2=mat([2,2]);
    a3=multiply(a1,a2);
    

    矩阵点乘

    a1=mat([2,2]);
    a2=a1*2;
    

    3.矩阵求逆,转置

    矩阵求逆

    a1=mat(eye(2,2)*0.5);
    a2=a1.I;
    #求矩阵matrix([[0.5,0],[0,0.5]])的逆矩阵
    

    矩阵转置

    a1=mat([[1,1],[0,0]]);
    a2=a1.T;
    

    4.计算矩阵对应行列的最大、最小值、和。

    a1=mat([[1,1],[2,3],[4,2]]);
    

    计算每一列、行的和

    a2=a1.sum(axis=0);//列和,这里得到的是1*2的矩阵
    a3=a1.sum(axis=1);//行和,这里得到的是3*1的矩阵
    a4=sum(a1[1,:]);//计算第一行所有列的和,这里得到的是一个数值
    

    计算最大、最小值和索引

    总结python的常见矩阵运算!(矩阵的创建,numpy,应元素相乘)

     

    5.矩阵的分隔和合并

    矩阵的分隔,同列表和数组的分隔一致。

    a=mat(ones((3,3)));
    b=a[1:,1:];//分割出第二行以后的行和第二列以后的列的所有元素
    

    矩阵的合并

    总结python的常见矩阵运算!(矩阵的创建,numpy,应元素相乘)

     

    四.矩阵、列表、数组的转换

    列表可以修改,并且列表中元素可以使不同类型的数据,如下:

    l1=[[1],'hello',3];
    

    numpy中数组,同一个数组中所有元素必须为同一个类型,有几个常见的属性:

    总结python的常见矩阵运算!(矩阵的创建,numpy,应元素相乘)

     

    它们之间的转换:

    总结python的常见矩阵运算!(矩阵的创建,numpy,应元素相乘)

     

    这里可以发现三者之间的转换是非常简单的,这里需要注意的是,当列表是一维的时候,将它转换成数组和矩阵后,再通过tolist()转换成列表是不相同的,需要做一些小小的修改。如下:

    总结python的常见矩阵运算!(矩阵的创建,numpy,应元素相乘)

     

    矩阵转换成数值,存在以下一种情况:

    dataMat=mat([1]);
    val=dataMat[0,0];//这个时候获取的就是矩阵的元素的数值,而不再是矩阵的类型
    

    以上就是本文的全部内容,希望对大家的学习有所帮助

    最后,小编想说一句话:我是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以加群:877562786

     

    展开全文
  • 一,对应相乘,x.mul(y) ,即点乘操作,点乘不求和操作,又可以叫作Hadamard product;点乘再求和,即为卷积 data = [[1,2], [3,4], [5, 6]] tensor = torch.FloatTensor(data) tensor Out[27]: tensor([[ 1., 2....
  • 当使用“*”的时候,如果两个矩阵之间的形状不能对应上,则会因为无法匹配而报错。当然如果只有行或者列对应不上可以通过广播使其行和列得到一一对应。 当使用“np.dot()”时,需要一个矩阵为(4,3),另一个矩...

    注意矩阵乘法运算中的“*”和“np.dot()”是不一样的。

    “*”的意思是给定一个大小为(4,3)的矩阵A和一个大小为(4,3)的矩阵B,两者使用“A*B”得到的矩阵的形状还是(4,3)。

    当使用“*”的时候,如果两个矩阵之间的形状不能对应上,则会因为无法匹配而报错。当然如果只有行或者列对应不上可以通过广播使其行和列得到一一对应。

    当使用“np.dot()”时,需要一个矩阵为(4,3),另一个矩阵为(3,4),这样得到的矩阵的形状为(4,4)。

    展开全文
  • 2、矩阵对应元素相乘 >>>a1=mat([1,1]); >>>a2=mat([2,2]); >>>a3=multiply(a1,a2) >>> a3 matrix([[2, 2]]) multiply()函数:数组和矩阵对应位置相乘,输出与相乘数组/矩阵的大小一致 3、矩阵点乘 >>>a1=mat([2,2...
  • import numpy as np ...#两个数组上对应位置相乘,有两种方法 a=np.multiply(X,Y) #这种方法也适用于两个计算对象是列表,如X1=[[2,4,5],[5,3,6]],Y1=[[4,6,3],[4,6,3]] b=X*Y print('a=','\n',a,'.
  • python中的矩阵相乘

    万次阅读 多人点赞 2019-02-18 21:58:25
    1. python中的矩阵(maxtrix)相乘与线性代数的算法一样,例如: 首先引入numpy import numpy as np; A =np.array([[1,2,3], [4,5,6]]) B = np.array([[1,4], [2,5], [3,6]]) C = A * 2 D = np.dot(A,.....
  • import numpy as np a = [[0,0], [3,4]] b = [[1,2], [1,2]] a = np.array(a) b = np.array(b) # 矩阵乘法 ...# 对应相乘 res3 = np.multiply(a,b) res4 = a*b print(res3) print(res4) ...
  • A*B是矩阵(向量)对应元素相乘 np.dot(A,B)是矩阵乘法 A,B形式相同,各个元素相乘=B*A A,B满足矩阵相乘的条件。 A为2x2,B为1x2,所以是A的每一行和B各元素对应相乘 A为2x2,B为2x1,所以是A的每...
  • python 矩阵乘法

    万次阅读 多人点赞 2019-02-09 13:55:54
    python 矩阵乘法 python 矩阵有两种形式:array 和 matrix 对象(它们的区别在...都是每行对应元素相乘(即对应内积的第一步,不求和) &gt;&gt;&gt; a = np.array([[1,2],[1,2]]) &gt;&gt;...
  • 求两个矩阵对应元素的和,乘积

    千次阅读 2020-03-13 14:53:23
    #1、求m,n中矩阵对应元素的和,元素的乘积 m = [[1,2,3], [4,5,6], [7,8,9]] n = [[2,2,2], [3,3,3],[4,4,4]] #m,n中矩阵对应元素的和 m = [[1,2,3], [4,5,6], [7,8,9]] n = [[2,2,2], [3,3,3],[4,4,4]] m ...
  • 对应元素相乘 element-wise product: np.multiply(), 或 * y1 = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2]) y2 = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2]) y1*y2 Out[8]: array([0, 0, 0, 1, 1, 1, 4, 4, 4]) np....
  • 对应相乘(简称点乘) np.multiply(A, B) 或者 A * B A.mul(B) 矩阵相乘、两种积(内积、点积) np.dot(A, B) A.mm(B) 1. numpy(ndarray) A = np.array([[1, 2], [-...
  • 向量点乘和对应分量相乘: >>> a array([1, 2, 3]) >>> b array([ 1., 1., 1.]) >>> np.multiply(a,b) array([ 1., 2., 3.]) ...矩阵乘法和对应分量相乘: >>> c matrix([[1, 2, 3]]) >>> d matrix([[ 1., 1., 1.]
  • CUDA PYTHON 矩阵相乘

    千次阅读 2020-07-12 16:05:51
    CUDA PYTHON 矩阵相乘一、CUDA线程索引二、CUDA矩阵计算1、卷积计算2、矩阵相乘三、CUDA共享内存四、CUDA python 矩阵相乘代码实践参考内容 一、CUDA线程索引 线程索引即如何根据线程层次中的blockId,gridId以及...
  • 稀疏矩阵相乘-Python

    2018-10-12 16:22:00
    稀疏矩阵相乘-Python版 Given two sparse matrices A and B, return the result o...
  • python-numpy两个数组对应元素运算

    万次阅读 2019-05-14 17:08:35
    python-numpy两个数组对应元素运算
  • - 对应元素相乘(a*b) 如下代码中,a为2*3矩阵,b为1*3矩阵,两者维数不同,进行对应元素相乘时需要先扩展a或b(也可能两者都要扩展) 扩展方法是先右对齐,看已经有维数的长度是否一致,不一致报错,剩下的维度...
  • Python之numpy库——矩阵相乘

    万次阅读 2019-04-10 09:26:43
    在机器学习中,会遇见两个...也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。 1、设n1是3 x 3 的矩阵,n2 是1 x 3 的矩阵 如上图所示...
  • 1)点乘(即“ * ”) ---- 各个矩阵对应元素做乘法 若 w 为m*1的矩阵,x 为m*n的矩阵,那么通过点乘结果就会得到一个m*n的矩阵。 若 w 为m*n的矩阵,x 为m*n的矩阵,那么通过点乘结果就会得到一个m*n的矩阵...
  • 使用 * 或者 np.multiply() 可实现对应元素相乘 import numpy as np a = [2, 2, 2, 2, 5] b = 2 print(np.multiply(a, b)) print(np.multiply(a, a)) print(np.array(a)*np.array(a)) print(a*a) # 会报错!因为...
  • PyTorch 对应相乘矩阵相乘

    万次阅读 多人点赞 2018-09-07 21:14:27
    一,对应相乘,x.mul(y) ,即点乘操作,点乘不求和操作,又可以叫作Hadamard product;点乘再求和,即为卷积 data = [[1,2], [3,4], [5, 6]] tensor = torch.FloatTensor(data) tensor Out[27]: tensor([[ 1.,...
  • def matrixMultiply(A, B): # 获取A的行数和列数 A_row, A_col = shape(A) # 获取B的行数和列数 B_row, B_col = shape(B) # 不能运算情况的判断 if(A_col != B_row): ... # 最终的矩阵 res...
  • Python作为一类弱类型语言。习惯了C/C++或者是Java等强类型语言的人在刚刚上手的时候可能会有些不习惯。在数据处理中,我们经常会用到numpy库中的数组,列表与矩阵等参数类型。而这些类型在调用某些方法的时候如果...
  • 向量点乘 (dot) 和对应分量相乘 ...矩阵乘法 (dot) 和对应分量相乘 (multiply) : >>> c matrix([[1, 2, 3]]) >>> d matrix([[ 1., 1., 1.]]) >>> np.multiply(c,d) matrix([[ 1., 2., 3.]]) >>> np.dot(c,d) Trace
  • 矩阵是一个由m*n个数排成的m行n列的表称为m行n列的矩阵,简称为m*n矩阵。下面的矩阵是一个3*2(3乘2)矩阵,因为它有三行四列。在数学的概念中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程...
  • python矩阵乘法

    万次阅读 2018-05-22 14:41:52
    1 、对应元素相乘 element-wise product: np.multiply(), 或 *对应元素相乘如果不是相同规格的矩阵,这样就有可能不能广播,比如3x1和2x1相乘就会报错,3x1和2x2相乘也会报错所以要想使用该乘法,必须保证两个矩阵的...
  • 矩阵对应位置元素相乘叫什么? 罗哥,是你吗

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,972
精华内容 3,588
关键字:

python矩阵对应元素相乘

python 订阅