Logo

郎哥编程

使用NumPy操作矩阵

2024-09-28 23

关于矩阵

填数游戏我们以前都玩过,它是一个九宫格。要求在九宫格的空格里填数,使横行、竖行、斜行上的三个数的和等于18。

为了叙说方便,在原有九宫格的基础上加上序号,横向为行,纵向为列。横向从上到下依次为1、2、3行,纵向从左到右依次为1、2、3列。

用大写黑体字母A表示九宫格,用行号和列号来表示九宫格内每个格子的数。例如:A[2,1]的数为10,也就是第2行第1列的数为10;A[1,3]的数为7,也就是第1行第3列的数为7;A[2,2]的数为6,也就是第2行第2列的数为6。

简便起见,也可以以下标方式表示每个格子的数。例如:A2,1等同于A[2,1];A1,3等同于A[1,3];A2,2等同于A[2,2]。

准备工作做好后,现在可以开始解题了。我们注意到A的第二行A[2,1]和A[2,2]的数分别为8和6,A[2,3]只能填数2。 A[2,3]的数确定后,A[3,3]的数也会确定下来,A[3,3]的数是9。

同样的解题思路,可以依次算出A[1,1]、A[3,1]、A[1,2]、A[3,2]的数。

现在把九宫格的表格线去掉,行号和列号也去掉,让它变换成下面的样子。

去除表格线的九宫格,就是矩阵的样式。矩阵是由行和列组成的一组数表,矩阵使用大写黑体字母表示,矩阵中的元素使用行下标和列下标来表示。矩阵一般用下面的形式表示。

其中,大写黑体字母A是矩阵的标识名称,标识名称下面的3 X 3表示3行3列矩阵。矩阵A共有3 X 3=9个数,这9个数称为矩阵的元素,A[1,1]表示第1行第1列的元素,A[1,2]表示第1行第2列的元素,……,依次类推,A[3,3]表示第3行第3列的元素。矩阵A也可以表示为A33。

使用NumPy构造矩阵

要在Numpy内构造矩阵,使用array()函数创建二维数组即可。

例1  使用Numpy数组构造矩阵A

>>> import numpy as np
>>> a = np.array([[3,8,7],
               [10,6,2],
               [5,4,9]])

例2 矩阵的加法和减法运算

#定义矩阵A和B
A = [[-1,3,2],[5,7,-2],[-3,0,1]]
B = [[8,2,-1],[6,4,0],[-2,3,5]]
#定义矩阵C,存储A+B的结果
C = [[0,0,0],[0,0,0],[0,0,0]]
#定义矩阵D,存储A-B的结果
D = [[0,0,0],[0,0,0],[0,0,0]]
# 遍历A矩阵的行
for i in range(len(A)):
   # 遍历A矩阵的列
   for j in range(len(A[0])):
       C[i][j] = A[i][j] + B[i][j]
       D[i][j] = A[i][j] - B[i][j]
 
#输出C矩阵
for r in C:
   print(r)
#输出D矩阵
for r in D:
   print(r)

例3 实现A矩阵与B矩阵的乘法运算。

import numpy as np
#定义矩阵A和B
A = np.array([[15,28,5],[12,31,6],[13,29,7]])
B = np.array([[4],[3],[2]])
#定义矩阵乘法运算函数
def matrixMul(A, B):
    #NumPy的matmul完成矩阵乘法运算
    C = np.matmul(A,B)
    return C
if __name__ == '__main__':
    C = matrixMul(A,B)
    print(C)

Numpy库的matmul()函数可以实现矩阵乘法运算。

例4 实现矩阵的转置运算

矩阵的转置比较容易理解,就是把矩阵的行列互换,行变成列,列变成行。

import numpy as np
#定义矩阵A
A = np.array([[1,1],[3,7],[11,5]])
#定义矩阵转置运算函数
def matrixTranspos(A):
  #创建矩阵C,矩阵C的默认元素都为0
  #矩阵C的行数为A矩阵的列数,列数为A矩阵的行数
  C = [[0] * len(A) for i in range(len(A[0]))]
  #NumPy的transpose完成矩阵A的转置运算
  C = np.transpose(A)
  return C
if __name__ == '__main__':
    
    C = matrixTranspos(A)
    print(C)

Numpy库的transpose()函数可以实现矩阵转置运算。

 

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论