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

Функция vdot

Функция vdot возвращает скалярное произведение двух векторов. В отличие от dot, эта функция не выполняет умножение матриц, а всегда приводит массивы к одномерному виду (flatten) и работает с ними как с векторами. Первый параметр - это левый вектор, второй - правый. Если передан массив комплексных чисел, vdot вычисляет сопряжённое произведение, что соответствует стандартному скалярному произведению в комплексном пространстве.

Синтаксис

np.vdot(a, b)

Параметры:

  • a - левый операнд (массив или скаляр);
  • b - правый операнд (массив или скаляр).

Результат - скалярное произведение в виде числа (тип зависит от входных данных).

Пример

Вычислим скалярное произведение двух одномерных массивов:

import numpy as np a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) res = np.vdot(a, b) print(res)

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

32

Здесь вычисление идёт по формуле: 1*4 + 2*5 + 3*6 = 4 + 10 + 18 = 32.

Пример

Функция vdot автоматически уплощает многомерные массивы, поэтому двумерные массивы обрабатываются как векторы:

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

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

70

Уплощённые массивы: [1, 2, 3, 4] и [5, 6, 7, 8]. Скалярное произведение: 1*5 + 2*6 + 3*7 + 4*8 = 5 + 12 + 21 + 32 = 70.

Пример

Работа с комплексными числами: vdot берёт сопряжение первого аргумента:

import numpy as np a = np.array([1+2j, 3+4j]) b = np.array([5+6j, 7+8j]) res = np.vdot(a, b) print(res)

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

(70-8j)

Вычисление: (1-2j)*(5+6j) + (3-4j)*(7+8j) = (17-4j) + (53-4j) = 70-8j.

Пример

Сравнение с функцией dot: vdot всегда возвращает скаляр, даже для матриц:

import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6], [7, 8]]) res_vdot = np.vdot(a, b) res_dot = np.dot(a, b) print("vdot:", res_vdot) print("dot:") print(res_dot)

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

vdot: 70 dot: [[19 22] [43 50]]

В то время как vdot возвращает скаляр 70, dot выполняет матричное умножение.

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

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