在 Python 中計算兩個陣列的點積
-
在 Python 中使用
*
符號計算兩個標量的點積 -
在 Python 中使用
numpy.dot()
函式計算兩個陣列或向量的點積 -
在 Python 中使用
sum()
函式計算兩個陣列或向量的點積 -
在 Python 中使用
map()
函式和mul()
函式計算兩個陣列或向量的點積 -
在 Python 中使用
more_itertools
庫計算兩個陣列或向量的點積
本教程介紹了在 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 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 中建立二維陣列
- 如何在 Python 中計算一維陣列中某項的出現次數
- Python 中的滑動視窗
- 在 Python 中將陣列寫入文字檔案
- 在 Python 中對二維陣列進行排序
- 在 Python 中獲取陣列的子陣列