用来练手的python练习题,原题链接:python练习实例44
题干: 两个 3 行 3 列的矩阵,实现其对应位置的数据相加,并返回一个新矩阵
使用基本的List类写起来就比较麻烦,需要初始化一个3*3的全0矩阵,之后通过遍历将矩阵对应位置上的值加起来,代码如下:
X = [[12,7,3],[4,5,6],[7,8,9]]Y = [[5,8,1],[6,7,3],[4,5,9]]Z = [[0,0,0],[0,0,0],[0,0,0]]
for i in range(3):for j in range(3):Z[i][j] = X[i][j] + Y[i][j]print(Z)
输出结果如下:
需要注意的是,list类的加法运算并不能实现这一功能:
Z = X + Y
print(Z)
当我们使用加法运算时,实际是将两个矩阵沿着矩阵的行拼接,输出结果如下:
当然,我们可以使用numpy模块,这样就不需要手动初始化一个3*3的零矩阵再遍历了:
import numpy as npX = np.array(X)
Y = np.array(Y)
Z = X + Y
print(Z)
输出结果如下:
我们看到,在numpy矩阵中,加号运算实现的就是矩阵对应元素的加法运算。那么,既然在numpy矩阵中,加号被重载为了对应元素的加法运算,那么要想拼接矩阵该如何写代码呢,numpy库的vstack hstack函数正是为此而生的:
Z1 = np.vstack((X,Y))# 沿着矩阵的行拼接
print(Z1)print()Z2 = np.hstack((X,Y))# 沿着矩阵的列拼接
print(Z2)
输出结果如下: