【Python】矩陣類的實現
內容
矩陣類的python實現
涉及知識
實現功能
矩陣類、取值、設值、判斷維度相等、乘法
代碼
import copy
class Matrix:
#初始化
def __init__(self,row,col,value=0):
self.shape = (row,col)
self.row = row
self.col = col
self._matrix = [[value for _ in range(col)] for _ in range(row)]
#取值
def __getitem__(self,index):
if isinstance(index,int):
return self._matrix[index]
elif isinstance(index,tuple):
return self._matrix[index[0]][index[1]]
#設值
def __setitem__(self,index,v):
if isinstance(index,int):
self._matrix[index] = copy.deepcopy(v)
elif isinstance(index,tuple):
self._matrix[index[0]][index[1]] = v
#判斷維度相等
def __eq__(self,N):
assert isinstance(N,Matrix)
return N.shape==self.shape
#矩陣乘法
def __mul__(self,N):
if isinstance(N,int) or isinstance(N,float):
M = Matrix(self.row,self.col)
for r in range(self.row):
for c in range(self.col):
M[r][c] = self[r][c] * N
elif isinstance(N,Matrix):
assert N.row == self.col
M = Matrix(self.row,self.col)
for r in range(self.row):
for c in range(self.col):
_sum = 0
for k in range(self.col):
_sum += self[r][k] * N[k][r]
M[r][c] = _sum
return M
if __name__ == ‘__main__’:
m = Matrix(3,3,2)
n = Matrix(3,3,3)
p = m * n