文章目录

  • 1.array
  • 1) 矩阵的乘法
  • 2) 将一维行向量转化为一维列向量
  • 3) 矩阵m\*1可以和1\*k相乘,得到矩阵m\*k,但矩阵m\*n(n≠1)不可以和1\*k相乘(k≠n)
  • 2. matrix
  • 1) 矩阵乘法
  • 2) 对numpy库中的matrix进行取元素不能用[i][j]而应用[i, j]
  • 3) 若python中matrix为整数矩阵,对其一个元素做运算时,其运算结果会向0的方向取整
  • 1.array

    1) 矩阵的乘法

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

    A = np.array([[1,2],[3,4]])
    B = np.array([[1,2],[1,2]])
    C = A @ B
    D = np.dot(A, B)
    
    输出:
    C、D均为:
    [[ 3  6]
     [ 7 14]]
    

    2) 将一维行向量转化为一维列向量

    注意:python中的array若给了初始值如a = np.array([1, 2, 3])则不能用a = a.Ta = np.transpose(a)来进行转置,而用range、np.zeros()、np.ones()等函数赋予初始值可以,这两种方法在a为多维矩阵时才也有效,但matrix可以用a.T可以

    a = np.array([1, 2, 3])
    a = a.T
    
    输出:[1 2 3]
    
    a = range(4)
    a = np.array([a]).T
    输出:
    [[0]
     [1]
     [2]
     [3]]
    

    3) 矩阵m*1可以和1*k相乘,得到矩阵m*k,但矩阵m*n(n≠1)不可以和1*k相乘(k≠n)

    注意:此处的相乘指的是两个矩阵对应位置上的元素相乘,若想实现矩阵的相乘,可以使用np.dot()

    a = np.array(range(4))
    a = np.array([a]).T
    b = np.array(range(3))
    c = a*b
    
    输出:
    a:输出形式如上
    b:[0 1 2]
    c:
    [[0 0 0]
     [0 1 2]
     [0 2 4]
     [0 3 6]]
    

    矩阵m*n(n≠1)不可以和1*k相乘(k≠n):

    a = [[1, 2],[3, 4],[5, 6]]
    a = np.array(a)
    b = np.array(range(3))
    c = a*b		# 不能相乘
    
    输出:
    a的shape为3*2,而b的shape为(3,),即一维数组,数组里有3个元素
    

    矩阵m*k(n≠1)可以和1*k相乘:

    a = [[1, 2],[3, 4],[5, 6]]
    a = np.array(a)
    b = np.array(range(2))
    c = a*b		# 不能相乘
    
    输出:
    a:
    [[1 2]
     [3 4]
     [5 6]] 
    b:
    [0 1]
    c:
    [[0 2]
     [0 4]
     [0 6]]
    

    2. matrix

    1) 矩阵乘法

    直接用A*B即可,若想实现对应元素相乘,用np.multiply(A, B)

    A = np.matrix([[1,2],[1,2]])
    B = np.matrix([[1,3],[2,2]])
    C = A * B
    D = np.multiply(A, B)
    
    输出:
    A:
    [[1 2]
     [1 2]]
    B:
    [[1 3]
     [2 2]]
    C:
    [[5 7]
     [5 7]]
    D:
    [[1 6]
     [2 4]]
    

    2) 对numpy库中的matrix进行取元素不能用[i][j]而应用[i, j]

    3) 若python中matrix为整数矩阵,对其一个元素做运算时,其运算结果会向0的方向取整

    a = np.matrix([3, 2])
    a[0, 0] = a[0, 0] - 0.2
    
    输出:
    a:[[2 2]]
    
    a = np.matrix([3, 2])
    a[0, 0] = a[0, 0] - 4.2
    
    输出:
    a:[[-1 2]]
    

    由于以上特性,故若相对一个matrix的所有元素重新赋值时,可以直接用对整体赋值而不是对其内部元素一个一个地赋值,比如:
    应该这样写,

    theta = theta - t
    

    而不是这样写(这样得到的结果会向零取整):

    theta[0, 0] = theta[0, 0] - t[0, 0]
    theta[0, 1] = theta[0, 1] - t[0, 1]
    

    例如:

    a = np.matrix([3, 2])
    c = np.matrix([0.5, 0.5])
    a = a - c
    
    输出:
    a:[[2.5 1.5]]
    
    a = np.matrix([3, 2])
    c = np.matrix([0.5, 0.5])
    a[0, 0] = a[0, 0] - c[0, 0]
    a[0, 1] = a[0, 1] - c[0, 1]
    
    输出:
    a:[[2 1]]
    

    来源:Mosquito…

    物联沃分享整理
    物联沃-IOTWORD物联网 » python矩阵运算

    发表评论