编写一个简单的矩阵类 类中用列表保存矩阵 例如保存一个3*2矩阵:[[1,2],[3,4],[5,6]] 矩阵类功能 初始化:MyMatrix([[1,2],[3,4],[5,6]])或MyMatrix(((1,2),(3,4),(5,6)) 转置: [[1,2],[3,4],[5,6]]转置后变为[[1,3,5],[2,4,6]] 两个矩阵的加减法 首先判断是否可以加减,如果可以则返回加减结果 矩阵数乘:2 * MyMatrix([[1,2],[3,4],[5,6]])得到MyMatrix([[2,4],[6,8],[10,12]]) 两个矩阵相乘 首先判断是否可以相乘,如果可以返回结果 重载加法(__add__、__radd__)、减法(__sub__、__rsub__) 、乘法(__mul__、__rmul__)
时间: 2023-06-03 21:06:48 浏览: 133
矩阵类 最基本的操作
5星 · 资源好评率100%
好的,这是一个非常好的问题,我很乐意为您解答。下面是根据您的要求编写的简单矩阵类,包含初始化、转置、加减法、数乘、相乘以及重载加法、减法、乘法等功能。
```python
class MyMatrix:
def __init__(self, matrix):
self.matrix = matrix
def __str__(self):
return str(self.matrix)
def __add__(self, other):
"""矩阵加法"""
if len(self.matrix) != len(other.matrix) or len(self.matrix[0]) != len(other.matrix[0]):
return "矩阵大小不一致,无法加减"
res = []
for i in range(len(self.matrix)):
row = []
for j in range(len(self.matrix[i])):
row.append(self.matrix[i][j] + other.matrix[i][j])
res.append(row)
return MyMatrix(res)
def __sub__(self, other):
"""矩阵减法"""
if len(self.matrix) != len(other.matrix) or len(self.matrix[0]) != len(other.matrix[0]):
return "矩阵大小不一致,无法加减"
res = []
for i in range(len(self.matrix)):
row = []
for j in range(len(self.matrix[i])):
row.append(self.matrix[i][j] - other.matrix[i][j])
res.append(row)
return MyMatrix(res)
def __mul__(self, other):
"""矩阵乘法"""
if len(self.matrix[0]) != len(other.matrix):
return "两个矩阵无法相乘"
res = []
for i in range(len(self.matrix)):
row = []
for j in range(len(other.matrix[0])):
tmp = 0
for k in range(len(other.matrix)):
tmp += self.matrix[i][k] * other.matrix[k][j]
row.append(tmp)
res.append(row)
return MyMatrix(res)
def __rmul__(self, other):
"""数乘"""
res = []
for i in range(len(self.matrix)):
row = []
for j in range(len(self.matrix[i])):
row.append(other * self.matrix[i][j])
res.append(row)
return MyMatrix(res)
def __radd__(self, other):
"""重载加法"""
return self.__add__(other)
def __rsub__(self, other):
"""重载减法"""
return self.__sub__(other)
def __rmul__(self, other):
"""重载乘法"""
return self.__mul__(other)
def transpose(self):
"""矩阵转置"""
res = []
for i in range(len(self.matrix[0])):
row = []
for j in range(len(self.matrix)):
row.append(self.matrix[j][i])
res.append(row)
return MyMatrix(res)
```
使用方法示例:
```python
mat1 = MyMatrix([[1,2],[3,4],[5,6]])
mat2 = MyMatrix([[4,3,2],[1,5,6]])
mat3 = MyMatrix([[2,2],[2,2],[2,2]])
print(mat1) # 输出[[1, 2], [3, 4], [5, 6]]
print(mat1.transpose()) # 输出[[1, 3, 5], [2, 4, 6]]
print(mat1 + mat2) # 输出矩阵加法结果
print(mat2 - mat3) # 输出矩阵减法结果
print(2 * mat1) # 输出矩阵数乘结果
print(mat1 * mat3) # 输出矩阵乘法结果
```
希望这个简单的矩阵类能够帮助到您,如果您有任何疑问或建议,欢迎提出。
阅读全文