Top.Mail.Ru
Ответы

Python помогите Задача 7. Матрицы

Вы стажируетесь в лаборатории искусственного интеллекта, в ней вам поручили разработать класс Matrix для обработки и анализа данных. Ваш класс должен предоставлять функциональность для выполнения основных операций с матрицами, таких как сложение, вычитание, умножение и транспонирование. Это будет полезно для обработки и структурирования больших объёмов данных, которые используются в обучении нейронных сетей.

Задача
Создайте класс Matrix для работы с матрицами.
Реализуйте методы:
сложения,
вычитания,
умножения,
транспонирования матрицы.
Создайте несколько экземпляров класса Matrix и протестируйте реализованные операции.

Пример:

# Создание экземпляров класса Matrix
m1 = Matrix(2, 3)
m1.data = [[1, 2, 3], [4, 5, 6]]
m2 = Matrix(2, 3)
m2.data = [[7, 8, 9], [10, 11, 12]]
# Тестирование операций
print("Матрица 1:")
print(m1)
print("Матрица 2:")
print(m2)
print("Сложение матриц:")
print(m1.add(m2))
print("Вычитание матриц:")
print(m1.subtract(m2))
m3 = Matrix(3, 2)
m3.data = [[1, 2], [3, 4], [5, 6]]

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
 Вывод 
Матрица 1: 
 
1    2    3 
 
4    5    6 
 
 
 
Матрица 2: 
 
7    8    9 
 
10    11    12 
 
 
 
Сложение матриц: 
 
8    10    12 
 
14    16    18 
 
 
 
Вычитание матриц: 
 
-6    -6    -6 
 
-6    -6    -6 
 
 
 
Умножение матриц: 
 
22    28 
 
49    64 
 
 
 
Транспонирование матрицы 1: 
 
1    4 
 
2    5 
 
3    6 

помогите пожалуйста

По дате
По рейтингу
Аватар пользователя
Профи

Конечно, помогу тебе с задачей!

Вот решение для класса Matrix:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
 python  
class Matrix:  
    def __init__(self, rows, columns):  
        self.rows = rows  
        self.columns = columns  
        self.data = [[0 for _ in range(columns)] for _ in range(rows)]  
    def add(self, other):  
        if self.rows != other.rows or self.columns != other.columns:  
            raise ValueError("Матрицы должны быть одинакового размера для сложения.")  
        result = Matrix(self.rows, self.columns)  
        for i in range(self.rows):  
            for j in range(self.columns):  
                result.data[i][j] = self.data[i][j] + other.data[i][j]  
        return result  
    def subtract(self, other):  
        if self.rows != other.rows or self.columns != other.columns:  
            raise ValueError("Матрицы должны быть одинакового размера для вычитания.")  
        result = Matrix(self.rows, self.columns)  
        for i in range(self.rows):  
            for j in range(self.columns):  
                result.data[i][j] = self.data[i][j] - other.data[i][j]  
        return result  
    def multiply(self, other):  
        if self.columns != other.rows:  
            raise ValueError("Количество столбцов первой матрицы должно быть равно количеству строк второй матрицы для умножения.")  
        result = Matrix(self.rows, other.columns)  
        for i in range(self.rows):  
            for j in range(other.columns):  
                for k in range(self.columns):  
                    result.data[i][j] += self.data[i][k] * other.data[k][j]  
        return result  
    def transpose(self):  
        result = Matrix(self.columns, self.rows)  
        for i in range(self.rows):  
            for j in range(self.columns):  
                result.data[j][i] = self.data[i][j]  
        return result 
    def __str__(self):  
        output = ""  
        for row in self.data:  
            output += "\t".join(str(element) for element in row)  
            output += "\n"  
        return output  
# Создание экземпляров класса Matrix  
m1 = Matrix(2, 3)  
m1.data = [[1, 2, 3], [4, 5, 6]]  
m2 = Matrix(2, 3)  
m2.data = [[7, 8, 9], [10, 11, 12]]  
 
  
 
# Тестирование операций  
 
print("Матрица 1:")  
 
print(m1)  
 
print("Матрица 2:")  
 
print(m2)  
 
print("Сложение матриц:")  
 
print(m1.add(m2))  
 
print("Вычитание матриц:")  
 
print(m1.subtract(m2))  
 
  
 
m3 = Matrix(3, 2)  
 
m3.data = [[1, 2], [3, 4], [5, 6]]  
 
  
 
print("Умножение матриц:")  
 
m4 = m1.multiply(m3)  
 
print(m4)  
 
  
 
print("Транспонирование матрицы 1:")  
 
m5 = m1.transpose()  
 
print(m5)  


Ты можешь использовать этот код, чтобы создать класс Matrix и протестировать операции сложения, вычитания, умножения и транспонирования матриц. Если у тебя возникнут вопросы или что-то не будет работать, дай мне знать!

Аватар пользователя
Мудрец

Вот тебе умножение матриц по правилам линейной алгебры, создаешь класс, в нем создаешь метод с параметрами self, other... Ставишь в коде селфы и радуешься - метод умножения матриц реализован