Курс Python → Метод rmatmul для пользовательских матриц

Метод rmatmul в Python предоставляет возможность расширить функциональность матричного умножения для пользовательских объектов. Этот метод используется для реализации обратного матричного умножения, когда левый операнд не поддерживает оператор @ (метод matmul).

Использование метода rmatmul особенно полезно при работе с матрицами или объектами, которые поддерживают матричное умножение. Этот метод позволяет обрабатывать матрицы пользовательских классов так же, как и обычные матрицы (например, списки списков), расширяя возможности операций матричного умножения.

Для примера, предположим, что у нас есть класс, представляющий пользовательские матрицы, и мы хотим иметь возможность выполнять матричное умножение как с обычными матрицами, так и с другими экземплярами нашего класса. Используя метод rmatmul, мы можем легко реализовать эту функциональность и сделать наш класс более универсальным.


class CustomMatrix:
    def __init__(self, matrix):
        self.matrix = matrix
    
    def __rmatmul__(self, other):
        if isinstance(other, list):
            other_matrix = other
        elif isinstance(other, CustomMatrix):
            other_matrix = other.matrix
        else:
            raise TypeError("Unsupported operand type")
        
        # Perform matrix multiplication
        result = [[sum(a * b for a, b in zip(row, col)) for col in zip(*other_matrix)] for row in self.matrix]
        
        return CustomMatrix(result)

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

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

Автор урока

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

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

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

  1. Стать Python-разработчиком
  2. Частичное совпадение ввода
  3. Переворот списка в Python
  4. Форматирование строк в Python
  5. Сортировка HTML-элементов
  6. Переворот последовательности
  7. Форматирование строк с f-строками
  8. Комментарии в Python
  9. Импорт модулей в Python 3.12
  10. Поиск частых элементов в списке
  11. Библиотека wikipedia для Python
  12. Цикл for в Python
  13. Исключение NotImplementedError
  14. Манипуляция формой массива в Numpy
  15. Создание словарей с defaultdict
  16. Основы Python за 14 дней
  17. Декораторы в Python
  18. Операторы += в Python
  19. Проектирование Singleton с метаклассом
  20. Лямбда-функции в Python
  21. Обработка исключений с блоком else
  22. Парсинг веб-страниц с Beautiful Soup
  23. Изменение элемента списка
  24. Вывод букв строки в Python
  25. Работа с enumerate()
  26. Работа с модулем random
  27. Вложенные циклы в Python
  28. Передача аргументов через **arguments
  29. Группы исключений в Python
  30. Объединение множеств в Python
  31. Названия столбцов в Python таблицах
  32. Измерение времени выполнения кода
  33. Функция enumerate() в Python
  34. Переменные класса и экземпляра
  35. Объединение итераторов
  36. Работа с очередями в Python
  37. Работа с срезами в Python
  38. Работа с контекстным менеджером Pool
  39. Замена элементов в списке с помощью генераторов списков
  40. Итерация по итерируемым объектам
  41. Упрощение работы с JSON-данными в Python
  42. Мониторинг работы программы Py-spy
  43. Группировка элементов в словарь
  44. Метод rsub для пользовательских чисел
  45. Списки: объединение, изменение
  46. Чтение и запись TOML-конфигов
  47. Логирование с Loguru
  48. Расчет времени выполнения программы

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