python矩阵运算

文章目录

  • 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]]

你可能感兴趣的:(python,矩阵,python,线性代数)