Como calcular o produto escalar usando numpy


Dado o vetor a = [a 1 , a 2 , a 3 ] e o vetor b = [b 1 , b 2 , b 3 ], o produto escalar dos vetores, denotado a · b , é dado por:

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

Por exemplo, se a = [2, 5, 6] e b = [4, 3, 2], então o produto escalar de a e b seria igual a:

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

ab = 8 + 15 + 12

ab = 35

Em termos simples, o produto escalar é a soma dos produtos das entradas correspondentes em dois vetores.

Em Python, você pode usar a função numpy.dot() para calcular rapidamente o produto escalar entre dois vetores:

 import numpy as np

n.p. dowry (a, b)

Os exemplos a seguir mostram como usar esta função na prática.

Exemplo 1: calcule o produto escalar entre dois vetores

O código a seguir mostra como usar numpy.dot() para calcular o produto escalar entre dois vetores:

 import numpy as np

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

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

33

Veja como esse valor foi calculado:

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

Exemplo 2: calcule o produto escalar entre duas colunas

O código a seguir mostra como usar numpy.dot() para calcular o produto escalar entre duas colunas em um DataFrame do pandas:

 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

Veja como esse valor foi calculado:

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

Nota: Tenha em mente que Python gerará um erro se os dois vetores para os quais você está calculando o produto escalar tiverem comprimentos diferentes.

Recursos adicionais

Como adicionar linhas a um DataFrame do Pandas
Como adicionar um array Numpy a um DataFrame do Pandas
Como calcular a correlação deslizante em pandas

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *