我已经在python中为矩阵创建了一个类,并希望具有不同的函数,这些函数在应用于矩阵对象时可以实现特定的目标。发生错误的特定函数是将一个矩阵添加到另一个矩阵的函数。
class Matrix:
def __init__(self, rows):
self.rows = rows
self.m = len(rows)
self.n = len(rows[0])
def add(self,other):
output = [[0 for x in range(self.m)] for y in range(self.m)]
for i in range(self.m):
for j in range(self.n):
output[i][j] = self[i][j] + other[i][j]
returnmatrix = Matrix(output)
return returnmatrix
B = Matrix([[1,2,3], [4,5,6], [7,8,9]])
F = Matrix([[1,2,3], [4,5,6], [7,8,9]])
B.add(F)
我希望输出是3x3矩阵,它是矩阵B和F的加法。收到的错误是:TypeError:“ Matrix”对象不可下标。
答案 0 :(得分:1)
错误来自此行;
for j in range(self.n):
output[i][j] = self[i][j] + other[i][j]
您正在下标对象,但可能需要下标rows
属性:
for j in range(self.n):
output.rows[i][j] = self.rows[i][j] + other.rows[i][j]
要使此功能起作用,您需要在此之前创建output
作为Matrix的实例,因此完整功能应为:
def add(self,other):
output = Matrix([[0 for x in range(self.m)] for y in range(self.m)])
for i in range(self.m):
for j in range(self.n):
output.rows[i][j] = self.rows[i][j] + other.rows[i][j]
return output
此外,如果要创建类似add
的方法,还应该研究dunder方法(例如__add__
);这将为您提供很好的功能,使您能够使用加号将对象的实例添加在一起。