Курс 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. Метод get() для словарей
  2. Работа со стеком в Python
  3. Подписка на SelectelNews в Twitter
  4. Комментарии в Python.
  5. Регистрация на хакатоне
  6. Атрибуты объекта в Python
  7. Создание и удаление объектов
  8. Работа с Event() в threading
  9. Множественное назначение в Python
  10. Константы в модуле cmath
  11. Класс UserDict: дополнительная функциональность
  12. Python Аргументы по умолчанию
  13. Python Метод Union Множеств
  14. Избегайте ошибку FileNotFoundError
  15. Библиотека schedule: планировщик задач
  16. Улучшенные подсказки для импорта в Python 3.12
  17. Модуль xkcd: добавление юмора в Python
  18. Обработка ошибки IndexError
  19. Правила именования переменных
  20. Monkey Patching в Python
  21. Python: отличительная особенность — отступы
  22. Сортировка и обратный порядок
  23. Блок else в циклах.
  24. Отладка в Python
  25. Сортировка в Python
  26. Удаление дубликатов из списка
  27. Импортирование в Python
  28. Профилирование с Pandas
  29. Переменные класса и экземпляра
  30. Тестирование с responses
  31. Метод bool() в Python
  32. Генераторы в Python
  33. Функции map() и reduce() в Python
  34. Работа с модулем glob в Python
  35. Работа с контекстным менеджером Pool
  36. Разрешение имен в Python
  37. Работа с файлами в Python
  38. Создание генераторов
  39. Удаление файлов с shutil.os.remove()
  40. Непрерывная проверка в Python
  41. Хешируемые ключи в Python
  42. Фильтрация списков с itertools
  43. Установка пакетов с помощью pip
  44. Управление контекстом выполнения кода
  45. Создание новых списков в Python
  46. Удаление специальных символов
  47. Установка и использование howdoi

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