как создать класс вычислений между матрицами в Python?

#python

#python

Вопрос:

Я пытаюсь создать класс, который сможет выполнять все возможные вычисления между матрицами. входными данными является матрица (размер не имеет значения), и на этой матрице класс должен выполнять любые вычисления — либо умножать, комбинировать, либо вычитать. Различные функции заключаются в следующем: мне нужно иметь в этом классе:

 __init__(self, data)

get_width(self)

get_height(self)

add(self, m)

scalar_multiply(self, a)

subtract(self, m)

multiply(self, m)

compare(self, m)
  

Большое спасибо, это также должно быть с простыми действиями.
Это мой код до сих пор:

 class Matrix:
    def __init__(self, data):
        self.data = data

    def get_width(self):
        return len(self.data[0])

    def get_height(self):
        return len(self.data)

    def add(self, m):
        lines = []
        for j in range(len(self.data)):
            line = []
            for i in range(len(self.data[j])):
                line.append(self.data[j][i]   m[j][i])
            lines.append(line)
        return lines

    def scalar_multiply(self, a):
        res = []
        for j in range(len(self.data)):
            line = []
            for i in range(len(self.data)):
                line.append(self.data[j][i]*a)
            res.append(line)
        return res

    def subtract(self, m):
        lines = []
        for j in range(len(self.data)):
            line = []
            for i in range(len(self.data)):
                line.append(self.data[j][i] - m[j][i])
            lines.append(line)
        return lines

    def multiply(self, m):
        lines = []
        for j in range(len(self.data-1)):
            line = []
            for i in range(len(m[0])-1):
                schum = 0
                for k in range(len(self.data[0]-1)):
                    schum = self.data[j][k]*m[k][i]
                line.append(schum)
            lines.append(line)
        return lines

    def compare(self, m):
        for j in range(len(self.data)):
            for i in range(len(self.data)[j]):
                while self.data[j][i] == m[j][i]:
                    return True
                else:
                    return False
  

Комментарии:

1. Можете ли вы предоставить свой код и где вы застряли?

2. Похоже, хорошее начало, так в чем же именно проблема?

3. Я предполагаю, но похоже, что несколько ваших методов должны либо возвращать новую матрицу вместо списка, либо, возможно, изменять матрицу на self.data месте.

Ответ №1:

Вам нужно создать это самостоятельно? Если нет, то уже есть отличная реализация этого в numpy

Комментарии:

1. извините, не понял комментарий выше… Я предполагаю, что это ваше определение класса matrix, вместо этого обновите свой вопрос; поле комментария, как правило, плохое место для размещения кода