使用 Python 中的 NumPy 计算 d 数组向量的内积

numpypythonserver side programmingprogramming

内积是线性代数数学运算中最重要的运算之一,它将两个向量作为输入,并将标量值作为输出。它也被称为点积或标量积。两个向量的内积如下所示。

a . b = ||a|| ||b|| cos(Ø)

其中,

  • ||a|| 和 ||b|| 分别是向量 a 和 b 的大小

  • Ø是向量 a 和 b 之间的角度

  • a . b 是 a 和 b 的点积

计算内积

如果我们要计算数组的内积或点积,则将其作为数组各个元素的乘积之和。我们以两个数组 a 和 b 为例,如下所示。

a = [a1, a2, a3]
b = [b1, b2, b3]

以下是用于计算内积的数组的数学表达式。

a . b = a1 * b1 + a2 * b2 + a3 * b3

使用 Numpy 计算内积

我们可以使用 Numpy 库中的 dot() 计算数组的点积。

语法

以下是使用 dot() 函数计算两个数组元素内积的语法。

np.dot(arr1, arr2)

其中,

  • Numpy 是库的名称

  • np 是库的别名

  • dot 是查找内积的函数积

  • arr1 和 arr2 是输入数组

示例

在此示例中,当我们将两个一维数组作为 dot() 函数的输入参数时,将返回标量积或内积作为输出。

import numpy as np
a = np.array([12,30,45])
b = np.array([23,89,50])
inner_product = np.dot(a,b)
print("两个一维数组的内积:", inner_product)

输出

两个一维数组的内积一维数组:5196

示例

以下是使用 dot() 函数计算一维数组内积的示例。

import numpy as np
a = np.array([34,23,98,79,90,34,23,67])
b = np.array([22,1,95,14,91,5,24,12])
inner_product = np.dot(a,b)
print("两个二维数组的内积:",inner_product)

输出

两个二维数组的内积:20903

示例

dot() 函数仅接受正方形数组作为其参数。如果我们尝试传递除正方形数组以外的值,则会引发错误。

import numpy as np
a = np.array([[34,23,98,79],[90,34,23,67]])
b = np.array([[22,1,95,14],[91,5,24,12]])
inner_product = np.dot(a,b)
print("两个二维数组的内积:",inner_product)

错误

Traceback (most recent call last):
  File "/home/cg/root/64d07b786d983/main.py", line 4, in <module>
inner_product = np.dot(a,b)
  File "<__array_function__ internals>", line 200, in dot
ValueError: shapes (2,4) and (2,4) not aligned: 4 (dim 1) != 2 (dim 0)

示例

在下面的例子中,我们尝试使用 dot() 函数计算二维数组的内积。

import numpy as np
a = np.array([[34,23],[90,34]])
b = np.array([[22,1],[91,5]])
inner_product = np.dot(a,b)
print("两个数组的内积二维数组:", inner_product)

输出

两个二维数组的内积:[[2841 149][5074 260]]

示例

现在让我们通过将三维数组作为参数传递给 dot() 函数来尝试计算向量的内积。

import numpy as np
a = np.array([[[34,23],[90,34]],[[43,23],[10,34]]])
b = np.array([[[22,1],[91,5]],[[22,1],[91,5]]])
inner_product = np.dot(a,b)
print("两个三维数组的内积:", inner_product)

输出

两个三维数组的内积:[[[[2841 149]
   [2841  149]]

  [[5074  260]
   [5074  260]]]


 [[[3039  158]
   [3039  158]]

  [[3314  180]
   [3314  180]]]]


相关文章