Як розрахувати скалярний добуток за допомогою numpy


Дано вектор a = [a 1 , a 2 , a 3 ] і вектор b = [b 1 , b 2 , b 3 ], скалярний добуток векторів, позначених a · b , визначається як:

ab = a 1 * b 1 + a 2 * b 2 + a 3 * b 3

Наприклад, якщо a = [2, 5, 6] і b = [4, 3, 2], то скалярний добуток a і b дорівнюватиме:

ab = 2*4 + 5*3 + 6*2

ab = 8 + 15 + 12

ab = 35

Простіше кажучи, скалярний добуток — це сума добутків відповідних записів у двох векторах.

У Python ви можете використовувати функцію numpy.dot() , щоб швидко обчислити скалярний добуток між двома векторами:

 import numpy as np

n.p. dowry (a, b)

Наступні приклади показують, як використовувати цю функцію на практиці.

Приклад 1: обчислити скалярний добуток двох векторів

Наступний код показує, як використовувати numpy.dot() для обчислення скалярного добутку між двома векторами:

 import numpy as np

#definevectors
a = [7, 2, 2]
b = [1, 4, 9]

#calculate dot product between vectors
n.p. dowry (a, b)

33

Ось як було розраховано це значення:

  • ab = 7*1 + 2*4 + 2*9
  • ab = 7 + 8 + 18
  • ab = 33

Приклад 2: обчисліть скалярний добуток між двома стовпцями

Наступний код показує, як використовувати numpy.dot() для обчислення скалярного добутку між двома стовпцями в pandas DataFrame:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' A ': [4, 6, 7, 7, 9],
                   ' B ': [5, 7, 7, 2, 2],
                   ' C ': [11, 8, 9, 6, 1]})

#view DataFrame
df

	A B C
0 4 5 11
1 6 7 8
2 7 7 9
3 7 2 6
4 9 2 1

#calculate dot product between column A and column C
n.p. dot (df. A , df. C )

206

Ось як було розраховано це значення:

  • AC = 4*11 + 6*8 + 7*9 + 7*6 + 9*1
  • AC = 44 + 48 + 63 + 42 + 9
  • A C = 206

Примітка. Майте на увазі, що Python видасть помилку, якщо два вектори, для яких ви обчислюєте скалярний добуток, мають різну довжину.

Додаткові ресурси

Як додати рядки до Pandas DataFrame
Як додати масив Numpy до Pandas DataFrame
Як розрахувати ковзну кореляцію в пандах

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *