
- NumPy 教程
- NumPy - 首頁
- NumPy - 簡介
- NumPy - 環境配置
- NumPy 陣列
- NumPy - Ndarray 物件
- NumPy - 資料型別
- NumPy 陣列的建立和操作
- NumPy - 陣列建立例程
- NumPy - 陣列操作
- NumPy - 從現有資料建立陣列
- NumPy - 從數值範圍建立陣列
- NumPy - 陣列迭代
- NumPy - 陣列重塑
- NumPy - 陣列連線
- NumPy - 陣列堆疊
- NumPy - 陣列分割
- NumPy - 陣列展平
- NumPy - 陣列轉置
- NumPy 索引和切片
- NumPy - 索引和切片
- NumPy - 高階索引
- NumPy 陣列屬性和運算
- NumPy - 陣列屬性
- NumPy - 陣列形狀
- NumPy - 陣列大小
- NumPy - 陣列步長
- NumPy - 陣列元素大小
- NumPy - 廣播
- NumPy - 算術運算
- NumPy - 陣列加法
- NumPy - 陣列減法
- NumPy - 陣列乘法
- NumPy - 陣列除法
- NumPy 高階陣列運算
- NumPy - 交換陣列軸
- NumPy - 位元組交換
- NumPy - 複製和檢視
- NumPy - 元素級陣列比較
- NumPy - 陣列過濾
- NumPy - 陣列連線
- NumPy - 排序、搜尋和計數函式
- NumPy - 陣列搜尋
- NumPy - 陣列的並集
- NumPy - 查詢唯一行
- NumPy - 建立日期時間陣列
- NumPy - 二元運算子
- NumPy - 字串函式
- NumPy - 數學函式
- NumPy - 統計函式
- NumPy - 矩陣庫
- NumPy - 線性代數
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 繪製直方圖
- NumPy - NumPy 的 I/O 操作
- NumPy 排序和高階操作
- NumPy - 陣列排序
- NumPy - 沿軸排序
- NumPy - 使用花式索引排序
- NumPy - 結構化陣列
- NumPy - 建立結構化陣列
- NumPy - 操作結構化陣列
- NumPy - 欄位訪問
- NumPy - 記錄陣列
- Numpy - 載入陣列
- Numpy - 儲存陣列
- NumPy - 向陣列追加值
- NumPy - 交換陣列列
- NumPy - 向陣列插入軸
- NumPy 處理缺失資料
- NumPy - 處理缺失資料
- NumPy - 識別缺失值
- NumPy - 刪除缺失資料
- NumPy - 缺失資料插補
- NumPy 效能最佳化
- NumPy - 使用陣列進行效能最佳化
- NumPy - 使用陣列進行向量化
- NumPy - 陣列的記憶體佈局
- Numpy 線性代數
- NumPy - 線性代數
- NumPy - 矩陣庫
- NumPy - 矩陣加法
- NumPy - 矩陣減法
- NumPy - 矩陣乘法
- NumPy - 元素級矩陣運算
- NumPy - 點積
- NumPy - 矩陣求逆
- NumPy - 行列式計算
- NumPy - 特徵值
- NumPy - 特徵向量
- NumPy - 奇異值分解
- NumPy - 求解線性方程組
- NumPy - 矩陣範數
- NumPy 元素級矩陣運算
- NumPy - 求和
- NumPy - 求均值
- NumPy - 求中位數
- NumPy - 求最小值
- NumPy - 求最大值
- NumPy 集合運算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 並集
- NumPy - 差集
- NumPy 有用資源
- NumPy 編譯器
- NumPy - 快速指南
- NumPy - 有用資源
- NumPy - 討論
NumPy - 點積
什麼是點積?
點積,也稱為標量積,是一種數學運算,它接受兩個等長數字序列(通常是向量)並返回單個數字。
在矩陣的上下文中,點積用於執行矩陣乘法,這是許多數學、物理和工程領域的基本運算。
兩個向量a和b的點積定義為:
a . b = a1b1 + a2b2 + ... + anbn
其中,ai和bi分別是向量a和b的分量,n是維數。
使用點積進行矩陣乘法
在矩陣乘法中,點積用於將第一個矩陣的行乘以第二個矩陣的列。這會產生一個新矩陣,其中每個元素都是對應行和列向量的點積。
考慮兩個矩陣A和B:
A = [[a11, a12], [a21, a22]] B = [[b11, b12], [b21, b22]]
乘積C = A . B為:
C = [[a11b11 + a12b21, a11b12 + a12b22], [a21b11 + a22b21, a21b12 + a22b22]]
使用 NumPy 進行點積
NumPy 提供了一種方便的方法來使用dot()函式執行點積。此函式可用於向量點積和矩陣乘法。
示例
在下面的示例中,點積計算為 (1 * 4) + (2 * 5) + (3 * 6) = 32:
import numpy as np # Define two vectors vector_1 = np.array([1, 2, 3]) vector_2 = np.array([4, 5, 6]) # Compute dot product dot_product = np.dot(vector_1, vector_2) print(dot_product)
以下是獲得的輸出:
32
矩陣點積
要計算兩個矩陣的點積,我們使用相同的dot()函式。
示例
在這個例子中,兩個矩陣的點積計算如下:
[[1*5 + 2*7, 1*6 + 2*8], [3*5 + 4*7, 3*6 + 4*8]]
import numpy as np # Define two matrices matrix_1 = np.array([[1, 2], [3, 4]]) matrix_2 = np.array([[5, 6], [7, 8]]) # Compute dot product matrix_product = np.dot(matrix_1, matrix_2) print(matrix_product)
以下是獲得的輸出:
[[19 22] [43 50]]
更高維陣列的點積
NumPy 的dot()函式也可以處理更高維的陣列。在這種情況下,該函式計算第一個陣列的最後一個軸和第二個陣列的倒數第二個軸上的點積。
示例
在這個例子中,為每一對子陣列計算點積,得到一個新的三維陣列:
import numpy as np # Define two 3-dimensional arrays array_1 = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) array_2 = np.array([[[1, 0], [0, 1]], [[1, 1], [1, 0]]]) # Compute dot product array_product = np.dot(array_1, array_2) print(array_product)
以下是獲得的輸出:
[[[[ 1 2] [ 3 1]] [[ 3 4] [ 7 3]]] [[[ 5 6] [11 5]] [[ 7 8] [15 7]]]]
使用 @ 運算子進行點積
在 Python 3.5 及更高版本中,@運算子可以用作矩陣乘法的dot()函式的替代方法。這使得程式碼更易讀且更簡潔。
示例
以下示例的結果與使用dot()函式相同,但語法更簡潔:
import numpy as np # Define two matrices matrix_1 = np.array([[1, 2], [3, 4]]) matrix_2 = np.array([[5, 6], [7, 8]]) # Using @ operator for matrix multiplication matrix_product = matrix_1 @ matrix_2 print(matrix_product)
以下是獲得的輸出:
[[19 22] [43 50]]
點積的應用
點積是一個基本運算,在各個領域都有很多應用:
- 機器學習:點積用於計算向量之間的相似度,這在支援向量機和神經網路等演算法中至關重要。
- 物理學:點積用於計算力所做的功以及在不同方向上投影向量。
- 計算機圖形學:點積用於著色計算以及確定表面和光源之間的角度。
- 線性代數:點積是求解線性方程組和變換的基礎。
示例:在機器學習中使用點積
在機器學習中,點積通常用於計算神經網路中的權重和偏差。
在這個例子中,點積計算輸入特徵的加權和,這是計算神經網路輸出的重要步驟:
import numpy as np # Define input vector (features) input_vector = np.array([0.5, 1.5, -1.0]) # Define weight vector (weights) weights = np.array([2.0, -1.0, 0.5]) # Compute the weighted sum (dot product) output = np.dot(input_vector, weights) print(output)
以下是獲得的輸出:
-1.0
廣告