РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
234 of 541 menu

Функция einsum

Функция einsum вычисляет произвольные тензорные операции с использованием соглашения о суммировании Эйнштейна. Первым параметром функция принимает строку с индексной записью операции, вторым и последующими параметрами - массивы, над которыми выполняется операция.

Синтаксис

np.einsum(subscripts, *operands, out=None, dtype=None, order='K', casting='safe', optimize=False)

Пример

Давайте вычислим сумму элементов одномерного массива с использованием соглашения Эйнштейна:

import numpy as np arr = np.array([1, 2, 3, 4, 5]) res = np.einsum('i->', arr) print(res)

Результат выполнения кода:

15

Пример

Выполним умножение матриц с помощью einsum. Рассмотрим две матрицы размером 2x3 и 3x2:

import numpy as np arr1 = np.array([[1, 2, 3], [4, 5, 6]]) arr2 = np.array([[7, 8], [9, 10], [11, 12]]) res = np.einsum('ij,jk->ik', arr1, arr2) print(res)

Результат выполнения кода:

[[ 58 64] [139 154]]

Пример

Вычислим скалярное произведение двух векторов с использованием соглашения Эйнштейна:

import numpy as np arr1 = np.array([1, 2, 3, 4]) arr2 = np.array([5, 6, 7, 8]) res = np.einsum('i,i->', arr1, arr2) print(res)

Результат выполнения кода:

70

Пример

Выполним транспонирование двумерного массива с помощью операции перестановки индексов:

import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) res = np.einsum('ij->ji', arr) print(res)

Результат выполнения кода:

[[1 4] [2 5] [3 6]]

Пример

Вычислим след матрицы с помощью соглашения Эйнштейна (сумма диагональных элементов):

import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) res = np.einsum('ii->', arr) print(res)

Результат выполнения кода:

15

Пример

Выполним вычисление внешнего произведения двух векторов с помощью einsum:

import numpy as np arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) res = np.einsum('i,j->ij', arr1, arr2) print(res)

Результат выполнения кода:

[[ 4 5 6] [ 8 10 12] [12 15 18]]

Пример

Выполним поэлементное умножение двух матриц с одинаковой размерностью с помощью einsum:

import numpy as np arr1 = np.array([[1, 2], [3, 4]]) arr2 = np.array([[5, 6], [7, 8]]) res = np.einsum('ij,ij->ij', arr1, arr2) print(res)

Результат выполнения кода:

[[ 5 12] [21 32]]

Смотрите также

  • функцию tensordot,
    которая вычисляет тензорное произведение
  • функцию dot,
    которая вычисляет скалярное произведение массивов
  • функцию matmul,
    которая выполняет матричное умножение
  • функцию outer,
    которая вычисляет внешнее произведение векторов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить