Курс Python → Метод matmul для умножения матриц

Класс Matrix в Python представляет собой специальный тип данных, который позволяет работать с матрицами и выполнять над ними различные операции. Одним из таких методов, реализованных в классе Matrix, является метод matmul(self, other), который определяет поведение оператора матричного умножения @. Для того чтобы использовать этот метод, необходимо импортировать класс Matrix из соответствующего модуля.

В методе matmul происходит проверка того, что число столбцов первой матрицы равно числу строк второй матрицы, так как это условие является необходимым для выполнения операции умножения матриц. Если данное условие не выполняется, то будет сгенерировано исключение. После проверки создается матрица, которая будет содержать результат умножения, и заполняется нулями.


class Matrix:
    def __matmul__(self, other):
        if len(self[0]) != len(other):
            raise ValueError("Number of columns in first matrix must be equal to number of rows in second matrix")
        
        result = [[0 for _ in range(len(other[0]))] for _ in range(len(self))]
        
        for i in range(len(self)):
            for j in range(len(other[0])):
                for k in range(len(other)):
                    result[i][j] += self[i][k] * other[k][j]
        
        return Matrix(result)

Далее происходит умножение матриц с использованием вложенных циклов. Каждый элемент результирующей матрицы вычисляется путем умножения соответствующих элементов из первой и второй матрицы, а затем их суммирования. Результат умножения возвращается в виде новой матрицы, содержащей произведение исходных матриц.

Использование оператора @ для умножения матриц позволяет удобно и интуитивно выполнять матричные операции в Python. При необходимости можно переопределить метод matmul для пользовательских классов, чтобы обеспечить поддержку оператора @ и работу с матрицами по определенным правилам или логике. Этот лайфхак особенно полезен при работе с линейной алгеброй и другими задачами, требующими манипулирования матрицами.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Метод Event.wait() в Python
  2. Извлечение данных из JSON
  3. Сортировка с параметром key
  4. Python: изменяемые и неизменяемые коллекции
  5. Метод join() для объединения элементов строки
  6. Разделение строки с помощью re.split()
  7. Оператор walrus в Python
  8. Проверка переменных окружения в Python
  9. Строки в Python: апострофы и кавычки
  10. Эффективная конкатенация строк в Python
  11. Метод is_absolute() для PurePath
  12. Лямбда-функции в Python
  13. Основы Python
  14. Создание уникального проекта
  15. Объединение словарей в Python
  16. Решение переменной Шредингера
  17. Работа с изображениями PIL
  18. Передача неизвестных аргументов в Python.
  19. Проверка типа объекта в Python
  20. Сравнение объектов в Python
  21. Генерация ключей RSA
  22. Метод count в Python: почему count(», ») возвращает 4?
  23. Простой калькулятор Python
  24. Функция product() в Python
  25. Функции в Python: создание и вызов
  26. Работа с типами данных в Python с помощью pydantic.
  27. Запрос пароля с помощью getpass
  28. Разделение строк методом split()
  29. Работа с часовыми поясами в Python
  30. Срезы в Python
  31. Работа с файлами в Python
  32. Функция divmod() в Python
  33. Форматирование кода на Python
  34. Проверка версии Python
  35. Python Метод del.
  36. Измерение времени выполнения
  37. Эффективная конкатенация строк с использованием join()
  38. Прокачанный трейсинг ошибок
  39. Заказ карты Тинькофф Black
  40. Работа с Path в Python
  41. Создание класса очереди
  42. Работа с классами данных
  43. Работа с словарями в Python
  44. Перетасовка списков в Python
  45. Форматирование строк в Python
  46. Работа с модулем os в Python
  47. Функция pow() — возвести число в степень
  48. Модуль Antigravity в Python 3

Marketello читают маркетологи из крутых компаний