【问题标题】:adding two matrices together (using methods, without using numpy)将两个矩阵相加(使用方法,不使用 numpy)
【发布时间】:2021-07-15 13:02:35
【问题描述】:

如何使用已实现的方法添加矩阵?

我的问题是我不太了解如何进行正确添加矩阵的操作。

比如这样的操作:

A = 1 2 3       1 2 1
    4 5 6   +   0 1 0
    7 8 9       3 2 1

我想使用 Matrix 类中的方法:

class Matrix:
    def __init__(self, m, n, init=True):
        if init:
            self.rows = [[0] * n for x in range(m)]
        else:
            self.rows = []
        self.m = m
        self.n = n

    def __getitem__(self, idx):
        return self.rows[idx]

    def __setitem__(self, idx, item):
        self.rows[idx] = item

    def __add__(self, mat):
        ret = Matrix(self.m, self.n)

        for x in range(self.m):
            row = [sum(item) for item in zip(self.rows[x], mat[x])]
            ret[x] = row

        return ret

【问题讨论】:

  • 那么问题到底是什么?
  • @Mureinik 我不知道如何正确调用/初始化该方法以使其正常工作

标签: python math matrix methods operators


【解决方案1】:

为我更新到以下运行,即使还有改进的空间(检查矩阵大小,...)

def getitem(self, idx):
    return self.rows[idx]

def setitem(self, idx, item):
    self.rows[idx] = item

def add(self, mat):
    ret = Matrix(self.m, self.n)

    for x in range(self.m):
        row = [sum(item) for item in zip(self.rows[x], mat.getitem(x))]
        ret.setitem(x,row)
    return ret

mat_a = Matrix(5,5)
mat_b = Matrix(5,5)
mat_b.setitem(slice(0,3),[[1,2,3,4,5],[4,5,6,7,8],[9,10,4,3,1]])
mat_c = mat_a.add(mat_b)
print(mat_c.getitem(slice(0,3)))

【讨论】:

    猜你喜欢
    • 2020-07-18
    • 1970-01-01
    • 2021-03-29
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 2019-04-07
    相关资源
    最近更新 更多