Курс 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. Работа с SQLite в Python
  2. Настройка вывода в Numpy
  3. Реверс строки в Python
  4. Аннотации типов в Python
  5. Создание новых списков
  6. Подсчет элементов в Python
  7. Метод split() в Python
  8. Метод lt для сортировки объектов
  9. Проверка на палиндром
  10. Управление контекстом выполнения кода
  11. Создание словаря в Python
  12. Модуль itertools: комбинации и перестановки
  13. Создание комплексных чисел
  14. Установка Python — Простое руководство
  15. Python: изменяемые и неизменяемые коллекции
  16. Функция __init__ в Python
  17. Генерация случайных данных в NumPy
  18. Печать списка с помощью метода join
  19. Получение частей дроби
  20. Операция += для списков
  21. Удаление элементов во время итерации
  22. Декораторы в Python
  23. Оформление кода на Python
  24. Преобразование range в итератор
  25. Деление в Python
  26. Измерение потребления памяти при сортировке
  27. Поиск элементов BeautifulSoup
  28. Синхронизация доступа к ресурсам
  29. Big O оптимизация
  30. Метод radd для пользовательских чисел
  31. Многоточие в Python
  32. Отрицательные индексы списков в Python
  33. Создание пользовательской коллекции в Python
  34. Метод Event.wait() в Python
  35. Разрешение имен в Python
  36. Python Менеджер контекста
  37. Оператор морж в Python 3.8
  38. Декораторы в Python
  39. Округление банкира в Python
  40. Antigravity модуль
  41. Преобразование чисел в Python
  42. Иерархия классов в Python
  43. Оператор is в Python

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