python實現矩陣乘法(實現文件讀寫操作)

註釋

  • dtype=np.int代表導入數據的格式爲整數
  • delimiter=’,'代表原始數據的存儲格式爲以‘,’爲間隔
  • 原始文件中以‘#’開頭的行代表被註釋,不會被np.loadtxt讀取
  • 通過[[0] * b for i in range(a)]的方式初始化一個x[a][b]的二維數組
  • np.savetxt()函數可以用來保存數據,第一個參數爲保存數據的路徑,其中C是自定義的文件名,如果該文件不存在,則會自動生成一個C文件,第二個參數爲需要保存的數據,fmt是數據儲存的格式,%d表示以整數儲存,delimiter爲數據間的分隔符,header爲頭標,footer爲尾標

源碼

#import random
import numpy as np

A = np.loadtxt('/Volumes/Cheney/A.txt',dtype=np.int,delimiter=',')
B = np.loadtxt('/Volumes/Cheney/B.txt',dtype=np.int,delimiter=',')
colA=(len(A[0]))#矩陣A的列數
rowA=(len(A))#矩陣A的行數
colB=(len(B[0]))#矩陣B的列數
rowB=(len(B))#矩陣B的行數
colC=colB#矩陣C的列數
rowC=rowA#矩陣C的行數
#rowA=colB=rowC
C = [[0] * colC for i in range(rowC)] #初始化C
print(A)
print(B)
#矩陣乘法
for i in range(rowC):
	for j in range(colC):
		#遍歷每一個元素
		for k in range(colC):
			C[i][j]+=A[i][k]*B[k][j]
print(C)
#保存
np.savetxt(r'/Volumes/Cheney/C.txt',C,fmt="%d", delimiter=',', header=str(rowC)+"行,"+str(colC)+"列",footer='By Accelerator')


效果

A和B兩個源文件

在這裏插入圖片描述 在這裏插入圖片描述
矩陣A*B得到的C文件

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章