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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

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

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

題目描述

【問(wèn)題描述】

編寫(xiě)程序,完成3*4矩陣和4*3整數(shù)矩陣的乘法,輸出結(jié)果矩陣。

【輸入形式】

一行,供24個(gè)整數(shù)。以先行后列順序輸入第一個(gè)矩陣,而后輸入第二個(gè)矩陣。

【輸出形式】

先行后列順序輸出結(jié)果矩陣,每個(gè)元素的顯示寬度為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

上面的輸入,意味著要計(jì)算如下兩個(gè)矩陣的乘積。

第一個(gè)矩陣 :

1 2 3 4

5 6 7 8

9 1 2 3

第二個(gè)矩陣:

9 8 7

6 5 4

3 2 1

1 2 3

【樣例輸出】

左側(cè)的1,2,3不是程序輸出的內(nèi)容。

34 32 30

110 100 90

96 87 78

123

知識(shí)點(diǎn)

輸入一組整數(shù)

矩陣的輸入

矩陣乘法

矩陣的輸出

輸出的值占8格

步驟1:輸入一組整數(shù)

line = input().split()

nums = []

for s in line:

nums.append(int(s))

print(nums)12345

對(duì)以上代碼,說(shuō)明如下:

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

2. 第2行,nums變量用來(lái)存儲(chǔ)整數(shù)列表,初始化為空列表。

3. 第3,4行,for循環(huán)的作用是遍歷數(shù)字字符串列表line內(nèi)的每個(gè)元素s,把這個(gè)元素s轉(zhuǎn)換為整數(shù)后,加到nums列表尾部。

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

步驟2:生成兩個(gè)相乘的矩陣

步驟2是把步驟1接收到的整數(shù)分裝到兩個(gè)矩陣內(nèi)。

#1.1 第1個(gè)矩陣

mtx1 = []

for r in range(3):

row = []

for c in range(4):

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

mtx1.append(row)

print(mtx1)

#第二個(gè)矩陣

mtx2 = []

start = 3 * 4 #起點(diǎn)下標(biāo)

for r in range(4):

row = []

for c in range(3):

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

mtx2.append(row)

print(mtx2)123456789101112131415161718

對(duì)于以上代碼,解釋如下:

1. 第2行,mtx1用來(lái)記住第一個(gè)矩陣。它是3行4列的矩陣。它的初值是空列表。

2. 第3行到第7行,是一個(gè)for循環(huán)。每循環(huán)一次,得到矩陣的一行。row變量用來(lái)記住這一行。

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

4. 第5,6行,是一個(gè)for循環(huán)。每循環(huán)一次,就往row列表中加入一個(gè)整數(shù)。循環(huán)4次,就生成了一行。

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

6. 第9行開(kāi)始,生成第二個(gè)矩陣mtx2。生成第二個(gè)矩陣的做法與生成第一個(gè)矩陣的做法是類(lèi)似的。不同點(diǎn)有兩處。第一處是,矩陣的元素來(lái)自nums列表中start位置及其后的元素。第二處不同是,第二個(gè)矩陣是4行3列的。

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

步驟3:矩陣相乘

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

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

#矩陣乘法

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

對(duì)于以上代碼,說(shuō)明如下:

1. result用來(lái)存儲(chǔ)3行3列的矩陣。

2. 第2行到第7行構(gòu)成一條for循環(huán)語(yǔ)句。一共循環(huán)3次。每循環(huán)一次,求出result矩陣的一行。

3. 第3行,row變量用來(lái)存儲(chǔ)矩陣的一行。初值設(shè)為空列表。

4. 第4行到第6行構(gòu)成一條for循環(huán)語(yǔ)句。這是內(nèi)循環(huán)。一共循環(huán)3次。每循環(huán)一次,求出第r行(r從0開(kāi)始編號(hào))中的一個(gè)元素的值。v變量記住這個(gè)值。第6行把v變量加到row列表尾部。

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

步驟4:輸出矩陣

輸出矩陣要滿(mǎn)足兩個(gè)要求:

1. 分成3行。

2. 每一行的每個(gè)元素占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

對(duì)以上代碼說(shuō)明如下:

1. for循環(huán)一共執(zhí)行3次。每一次,輸出矩陣的一行。

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

完整的代碼

#矩陣乘法

#1. 輸入

line = input().split()

nums = []

for s in line:

nums.append(int(s))

print(nums)

#1.1 第1個(gè)矩陣

mtx1 = []

for r in range(3):

row = []

for c in range(4):

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

mtx1.append(row)

print(mtx1)

#第二個(gè)矩陣

mtx2 = []

start = 3 * 4 #起點(diǎn)下標(biāo)

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)

#輸出結(jié)果矩陣

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

小結(jié)

分步驟解題,每步達(dá)成一個(gè)小目標(biāo)。

每一步的末尾,打印輸出中間結(jié)果,有利于驗(yàn)證代碼是否正確。

不熟悉的話(huà),多讀幾遍,自己默寫(xiě)幾遍,就會(huì)成為你的代碼。Python學(xué)習(xí)資料或者需要代碼、視頻加這個(gè)群吧548加上377還有875 都在這里了

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。