美文网首页每天学一点新知识
使用Python实现矩阵类_线性代数_day10

使用Python实现矩阵类_线性代数_day10

作者: FANDX | 来源:发表于2020-01-24 08:16 被阅读0次

Vector向量是之前文章中已经实现的向量类

from playLA.Vector import Vector


class Matrix(object):
    def __init__(self, list2d):
        """初始化矩阵类"""
        self._values = [row[:] for row in list2d]

    def row_vector(self, index):
        """返回矩阵的第index个行向量"""
        return Vector(self._values[index])

    def col_vector(self, index):
        """返回矩阵的第index个列向量"""
        return Vector([row[index] for row in self._values])

    def __getitem__(self, pos):
        """返回矩阵pos位置的元素"""
        r, c = pos
        return self._values[r][c]

    def size(self):
        """返回矩阵中的元素的个数"""
        r, c = self.shape()
        return r * c

    def shape(self):
        """返回矩阵的形状:(行数, 列数)"""
        return len(self._values), len(self._values[0])

    def row_num(self):
        """返回矩阵的行数"""
        return self.shape()[0]

    __len__ = row_num

    def col_num(self):
        """返回矩阵的列数"""
        return self.shape()[1]

    def __repr__(self):
        return "Matrix({})".format(self._values)

    __str__ = __repr__


if __name__ == '__main__':
    matrix = Matrix([[1, 2], [3, 4]])
    print(matrix)

    print("matrix.shape = {}".format(matrix.shape()))
    print("matrix.size = {}".format(matrix.size()))
    print("len(matrix) = {}".format(len(matrix)))
    print("matrix[0][0] = {}".format(matrix[0, 0]))

相关文章

网友评论

    本文标题:使用Python实现矩阵类_线性代数_day10

    本文链接:https://www.haomeiwen.com/subject/qwjcthtx.html