用來練手的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)
輸出結果如下: