在 Python 中计算两个数组的点积

Vaibhhav Khetarpal 2023年10月10日
  1. 在 Python 中使用*符号计算两个标量的点积
  2. 在 Python 中使用 numpy.dot() 函数计算两个数组或向量的点积
  3. 在 Python 中使用 sum() 函数计算两个数组或向量的点积
  4. 在 Python 中使用 map() 函数和 mul() 函数计算两个数组或向量的点积
  5. 在 Python 中使用 more_itertools 库计算两个数组或向量的点积
在 Python 中计算两个数组的点积

本教程介绍了在 Python 中计算两个数组或向量的点积的不同方法。

在我们继续使用不同的方法来实现它之前,我们将首先了解 Python 中的点积。

你可能知道,点积,有时甚至称为标量积,是在任意两个指定数组之间执行的代数运算;它们可以是标量或向量。输出始终是一个数字。

Python 允许计算两个数组的点积,前提是两个数组的长度序列相似。

在 Python 中使用*符号计算两个标量的点积

标量也称为 0 维数组,被简单地视为标准数值。它们之间的点积将与两个标量的乘积相同。

虽然下面提到的方法也适用于标量,但这是一种相对简单的方法,无需做任何额外的工作即可执行该过程。

以下代码使用 * 符号计算 Python 中两个标量的点积。

dotp = 2 * 5
print(dotp)

上面的代码提供了以下输出:

10

在 Python 中使用 numpy.dot() 函数计算两个数组或向量的点积

术语 NumPy 是 Numerical Python 的首字母缩写词。这个库使得在 Python 中使用数组成为可能。它还提供了有助于操作这些数组的函数。

numpy.dot() 函数是一个专门设计用于执行查找两个数组之间的点积目的的函数。NumPy 模块需要导入到 Python 代码中才能顺利运行而不会出错。

为了在 Python 代码中解释这个实现,我们将采用两个列表并返回点积。

以下代码使用 numpy.dot() 函数在 Python 中计算两个数组或向量的点积。

import numpy as np

x = [5, 10]
y = [4, -7]
dotp = np.dot(x, y)
print(dotp)

上面的代码提供了以下输出:

-50

上面的代码也适用于二维数组。你可以通过自己在现实生活中快速找到点积来轻松确认答案。如果使用得当,此功能可提供准确的结果。

可以通过以下方式对标量使用相同的函数:

import numpy as np

dotp = np.dot(2, 5)
print(dotp)

上面的代码提供了以下输出:

10

Python 3.5 引入了 @ 运算符来计算使用 NumPy 创建的 n 维数组的点积。这种方法在较新版本的 Python 中被广泛使用。我们应该注意到它不适用于一般列表。

在 Python 中使用 sum() 函数计算两个数组或向量的点积

一种更古老的 Pythonic 方法是利用 sum() 函数并进行一些常规调整来计算 Python 中两个数组之间的点积。

zip() 函数是 Python 中提供的内置函数,在这里与 sum() 函数一起使用以组合给定的数组。

在这里,我们还将使用列表推导来使代码更加紧凑。

以下代码使用 sum() 函数在 Python 中计算两个数组或向量的点积。

x = [5, 10]
y = [4, -7]
print(sum([i * j for (i, j) in zip(x, y)]))

上面的代码提供了以下输出:

-50

在 Python 中使用 map() 函数和 mul() 函数计算两个数组或向量的点积

map() 函数用于在将任何给定函数应用于所选可迭代对象的所有项目后返回 Map 对象。

mul() 函数,顾名思义,是一个内置函数,用于执行任意两个数字的乘法任务。mul() 函数可以通过从 operator 库中导入来找到和使用。

以下代码使用 map() 函数和 mul() 函数在 Python 中计算两个数组或向量的点积。

from operator import mul

x = [5, 10]
y = [4, -7]
print(sum(map(mul, x, y)))

上面的代码提供了以下输出:

-50

在 Python 中使用 more_itertools 库计算两个数组或向量的点积

more_iteratertools 是一个第三方库,在 Github 平台上占有很大的份额。它只是实现了已经存在的通用 dotproduct itertools 配方。

以下代码使用 more_itertools 库在 Python 中计算两个数组或向量的点积。

import more_itertools as mit

a = [5, 10]
b = [4, -7]
print(mit.dotproduct(a, b))

上面的代码提供了以下输出:

-50
Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

相关文章 - Python Array

相关文章 - Python Math