在 Python 中計算兩個陣列的點積

Vaibhhav Khetarpal 2023年1月30日 2022年5月17日
  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