Python 创建一个类,通过自定义方法进行矩阵乘法运算
我们将创建一个名为 Matrix
的类,该类包含一个自定义方法 multiply
,用于执行矩阵乘法运算。矩阵乘法要求第一个矩阵的列数等于第二个矩阵的行数。
实例
class Matrix:
def __init__(self, data):
self.data = data
self.rows = len(data)
self.cols = len(data[0]) if self.rows > 0 else 0
def multiply(self, other):
if self.cols != other.rows:
raise ValueError("The number of columns in the first matrix must be equal to the number of rows in the second matrix.")
result = [[0 for _ in range(other.cols)] for _ in range(self.rows)]
for i in range(self.rows):
for j in range(other.cols):
for k in range(self.cols):
result[i][j] += self.data[i][k] * other.data[k][j]
return Matrix(result)
def __str__(self):
return 'n'.join([' '.join(map(str, row)) for row in self.data])
# 示例使用
matrix1 = Matrix([[1, 2, 3], [4, 5, 6]])
matrix2 = Matrix([[7, 8], [9, 10], [11, 12]])
result_matrix = matrix1.multiply(matrix2)
print(result_matrix)
def __init__(self, data):
self.data = data
self.rows = len(data)
self.cols = len(data[0]) if self.rows > 0 else 0
def multiply(self, other):
if self.cols != other.rows:
raise ValueError("The number of columns in the first matrix must be equal to the number of rows in the second matrix.")
result = [[0 for _ in range(other.cols)] for _ in range(self.rows)]
for i in range(self.rows):
for j in range(other.cols):
for k in range(self.cols):
result[i][j] += self.data[i][k] * other.data[k][j]
return Matrix(result)
def __str__(self):
return 'n'.join([' '.join(map(str, row)) for row in self.data])
# 示例使用
matrix1 = Matrix([[1, 2, 3], [4, 5, 6]])
matrix2 = Matrix([[7, 8], [9, 10], [11, 12]])
result_matrix = matrix1.multiply(matrix2)
print(result_matrix)
代码解析:
__init__
方法用于初始化矩阵对象,接受一个二维列表data
作为参数,并计算矩阵的行数和列数。multiply
方法用于执行矩阵乘法运算。首先检查第一个矩阵的列数是否等于第二个矩阵的行数,如果不相等则抛出异常。然后创建一个结果矩阵,使用三重循环计算每个元素的值。__str__
方法用于将矩阵对象转换为字符串形式,便于打印输出。- 示例中创建了两个矩阵
matrix1
和matrix2
,并调用multiply
方法进行矩阵乘法运算,最后打印结果。
输出结果:
58 64 139 154
点我分享笔记