Курс 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. Ветвление выражения в Python
  2. Оператор in для Python
  3. Лямбда-функции в Python
  4. Ошибка NotImplemented в Python
  5. Работа с модулем glob в Python
  6. Мощь вложенных функций в Python
  7. Обработка исключений
  8. Декораторы для регистрации функций
  9. Склеивание строк без циклов
  10. Создание списков в Python
  11. enumerate() в Python для работы с индексами
  12. Изменение логики работы с временем
  13. Обновление множества в Python
  14. Избегайте ошибку FileNotFoundError
  15. Поток данных в Python
  16. Библиотека schedule: планировщик задач
  17. Добавление элемента к кортежу
  18. Переопределение метода __pow__
  19. Создание OrderedDict
  20. Форматирование данных с помощью pprint
  21. Добавление Progressbar в Python
  22. Создание списка через итерацию
  23. Работа с процессами в Python
  24. Частичное совпадение пользовательского ввода в Python 3.10
  25. Замена текста в Python
  26. Создание коллекций из выражения-генератора
  27. Многострочные комментарии в Python
  28. Группы исключений в Python
  29. Декораторы в Python
  30. Игра «Камень, ножницы, бумага» — Python
  31. Проверка на истинность объектов в Python
  32. Моржовый оператор в Python 3.8
  33. Создание новой даты в Python
  34. Печать в одной строке
  35. Метод difference_update() — разность множеств
  36. Вывод переменной и строки в Python
  37. Переворот последовательности
  38. Получение частей дроби
  39. Замена символов в строке
  40. Поиск кода
  41. OrderedDict — упорядоченный словарь
  42. Управление памятью в numpy.
  43. Генерация чисел с range()
  44. Методы и функции в Python
  45. Расчет времени выполнения

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