【Python】矩陣類的實現

【Python】矩陣類的實現

內容

矩陣類的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

參考鏈接

https://www.cnblogs.com/hhh5460/p/4314231.html

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