Функция 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,
которая вычисляет векторное произведение для трёхмерных векторов