Курс 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. Создание треугольника Паскаля
  2. Работа с файлами в Python
  3. Модуль Antigravity в Python 3
  4. Регистрация на курсы SF Education
  5. Перетасовка списков в Python
  6. Работа с путями в Python
  7. Подсчет элементов в списке с Counter
  8. Удаление элемента из списка в Python
  9. Декораторы в Python
  10. Оператор «or» в Python
  11. Переопределение метода __eq__
  12. Подписка на SelectelNews в Twitter
  13. Сортировка элементов в Python
  14. Отправка поздравлений по дню рождения
  15. Метод ifloordiv для пользовательских классов
  16. Python enumerate() использование
  17. Обход словаря в Python
  18. Срезы в Python
  19. Сортировка с помощью key
  20. Модуль subprocess: запуск внешних команд
  21. Модуль os: работа с файлами и папками
  22. Определение размера папок в Python
  23. Работа со строками в Python.
  24. Создание новых функций с помощью functools.partial
  25. Конвертация изображений в PDF
  26. Преобразование данных в Python
  27. Регулярные выражения: метод match
  28. Функция sleep() в Python
  29. Слияние словарей в Python 3.9
  30. Установка и обучение ChatterBot
  31. Установка и использование модуля Wikipedia
  32. Конкатенация строк с методом join()
  33. Форматирование кода на Python
  34. Работа с рекламными данными в Pandas
  35. Декораторы в Python
  36. Удаление ключа из словаря
  37. Метод __float__ в Python
  38. Инверсия списка/строки в Python
  39. Глубокое копирование объектов
  40. Функция map() в Python
  41. Копирование словарей и списков в Python
  42. Отрицательные индексы списков в Python
  43. Основы Python
  44. Фильтрация списка от «ложных» значений
  45. Конкатенация строк с join() в Python
  46. Конвертация коллекций в Python.
  47. Структуры данных в Python
  48. Комментарии в Python
  49. Необязательные аргументы в Python

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