日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python矩阵相乘例题_百道Python入门级练习题(新手友好)第一回合——矩阵乘法...

發布時間:2024/7/23 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python矩阵相乘例题_百道Python入门级练习题(新手友好)第一回合——矩阵乘法... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

【問題描述】

編寫程序,完成3*4矩陣和4*3整數矩陣的乘法,輸出結果矩陣。

【輸入形式】

一行,供24個整數。以先行后列順序輸入第一個矩陣,而后輸入第二個矩陣。

【輸出形式】

先行后列順序輸出結果矩陣,每個元素的顯示寬度為8格,屏幕一行只顯示矩陣的一行。

【樣例輸入】

1 2 3 4 5 6 7 8 9 1 2 3 9 8 7 6 5 4 3 2 1 1 2 3

上面的輸入,意味著要計算如下兩個矩陣的乘積。

第一個矩陣 :

1 2 3 4

5 6 7 8

9 1 2 3

第二個矩陣:

9 8 7

6 5 4

3 2 1

1 2 3

【樣例輸出】

左側的1,2,3不是程序輸出的內容。

34 32 30

110 100 90

96 87 78

123

知識點

輸入一組整數

矩陣的輸入

矩陣乘法

矩陣的輸出

輸出的值占8格

步驟1:輸入一組整數

line = input().split()

nums = []

for s in line:

nums.append(int(s))

print(nums)12345

對以上代碼,說明如下:

1. 第1行,input()讀入整行,split()以空格為分隔符把整行分割成多段,生成數字字符串列表line。

2. 第2行,nums變量用來存儲整數列表,初始化為空列表。

3. 第3,4行,for循環的作用是遍歷數字字符串列表line內的每個元素s,把這個元素s轉換為整數后,加到nums列表尾部。

4. 第5行,打印nums列表的值,可以幫助檢查是否輸入成功。

步驟2:生成兩個相乘的矩陣

步驟2是把步驟1接收到的整數分裝到兩個矩陣內。

#1.1 第1個矩陣

mtx1 = []

for r in range(3):

row = []

for c in range(4):

row.append(nums[r * 4 + c])

mtx1.append(row)

print(mtx1)

#第二個矩陣

mtx2 = []

start = 3 * 4 #起點下標

for r in range(4):

row = []

for c in range(3):

row.append(nums[start + r * 3 + c])

mtx2.append(row)

print(mtx2)123456789101112131415161718

對于以上代碼,解釋如下:

1. 第2行,mtx1用來記住第一個矩陣。它是3行4列的矩陣。它的初值是空列表。

2. 第3行到第7行,是一個for循環。每循環一次,得到矩陣的一行。row變量用來記住這一行。

3. 第4行,row變量初始化為空列表。

4. 第5,6行,是一個for循環。每循環一次,就往row列表中加入一個整數。循環4次,就生成了一行。

5. 第7行,把矩陣的一行加到mtx1的尾部。mtx1是以列表作為元素的列表,也即矩陣。

6. 第9行開始,生成第二個矩陣mtx2。生成第二個矩陣的做法與生成第一個矩陣的做法是類似的。不同點有兩處。第一處是,矩陣的元素來自nums列表中start位置及其后的元素。第二處不同是,第二個矩陣是4行3列的。

7. print(mtx1)和print(mtx2)這兩條語句用于打印兩個矩陣的值,幫助檢查是否正確生成了兩個矩陣。不過,矩陣的元素在屏幕上沒有分行顯示,而是顯示在同一行。

步驟3:矩陣相乘

3行4列的矩陣乘以4行3列的矩陣,結果是3行3列的矩陣。你事先要熟悉矩陣的乘法。

以下代碼的思路是,依次求出3行3列矩陣的每一個元素的值。

#矩陣乘法

result = []

for r in range(3):

row = []

for c in range(3):

v = mtx1[r][0] * mtx2[0][c] + mtx1[r][1] * mtx2[1][c] + mtx1[r][2] * mtx2[2][c] + mtx1[r][3] * mtx2[3][c]

row.append(v)

result.append(row)12345678

對于以上代碼,說明如下:

1. result用來存儲3行3列的矩陣。

2. 第2行到第7行構成一條for循環語句。一共循環3次。每循環一次,求出result矩陣的一行。

3. 第3行,row變量用來存儲矩陣的一行。初值設為空列表。

4. 第4行到第6行構成一條for循環語句。這是內循環。一共循環3次。每循環一次,求出第r行(r從0開始編號)中的一個元素的值。v變量記住這個值。第6行把v變量加到row列表尾部。

5. 第7行,row加到result矩陣尾部,成為新的一行。

步驟4:輸出矩陣

輸出矩陣要滿足兩個要求:

1. 分成3行。

2. 每一行的每個元素占8格。

代碼是:

for r in range(3):

print(str(result[r][0]).rjust(8) + str(result[r][1]).rjust(8) + str(result[r][2]).rjust(8))12

對以上代碼說明如下:

1. for循環一共執行3次。每一次,輸出矩陣的一行。

2. str(result[r][0]).rjust(8)的作用是,首先把元素result[r][0]轉換為字符串形式的值,然后調用字符串的rjust方法,使得字符串長度不足8格的話,左側填充空格。假設,result[r][0]值是34,那么輸出的時候,左側將填充6個空格,形成有8個字符的字符串,即“======34”。這里,=代表的是空格。

完整的代碼

#矩陣乘法

#1. 輸入

line = input().split()

nums = []

for s in line:

nums.append(int(s))

print(nums)

#1.1 第1個矩陣

mtx1 = []

for r in range(3):

row = []

for c in range(4):

row.append(nums[r * 4 + c])

mtx1.append(row)

print(mtx1)

#第二個矩陣

mtx2 = []

start = 3 * 4 #起點下標

for r in range(4):

row = []

for c in range(3):

row.append(nums[start + r * 3 + c])

mtx2.append(row)

print(mtx2)

#矩陣乘法

result = []

for r in range(3):

row = []

for c in range(3):

v = mtx1[r][0] * mtx2[0][c] + mtx1[r][1] * mtx2[1][c] + mtx1[r][2] * mtx2[2][c] + mtx1[r][3] * mtx2[3][c]

row.append(v)

result.append(row)

#輸出結果矩陣

for r in range(3):

print(str(result[r][0]).rjust(8) + str(result[r][1]).rjust(8) + str(result[r][2]).rjust(8))12345678910111213141516171819202122232425262728293031323334353637383940

小結

分步驟解題,每步達成一個小目標。

每一步的末尾,打印輸出中間結果,有利于驗證代碼是否正確。

不熟悉的話,多讀幾遍,自己默寫幾遍,就會成為你的代碼。Python學習資料或者需要代碼、視頻加這個群吧548加上377還有875 都在這里了

總結

以上是生活随笔為你收集整理的python矩阵相乘例题_百道Python入门级练习题(新手友好)第一回合——矩阵乘法...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。