iPAS 備考專區 登入

iPAS AI 應用規劃師 中級 科目三 機器學習技術與應用・114 年第二次・L23・第 40 題

np.dot(v1, v2) 結果是多少?NumPy 向量矩陣運算識別

原題

依據附圖程式碼進行資料處理,下列何者正確? import numpy as np v1 = np.array([1, 2, 3]) v2 = np.array([4, 5, 6]) A = np.array([[1, 2], [3, 4]])

白話

程式碼定義了兩個向量 v1=[1,2,3]、v2=[4,5,6],和一個 2×2 矩陣 A=[[1,2],[3,4]]。題目問這四個操作哪一個描述正確:linalg.inv 算什麼、v1 * v2 是什麼、np.dot(v1,v2) 的結果、linalg.eig 算什麼。

問你:哪一個描述正確說出了該 NumPy 函數的功能或計算結果?

一句話總結

np.dot(v1, v2) 計算兩個向量的內積:1×4 + 2×5 + 3×6 = 4 + 10 + 18 = 32,返回純量 np.int64(32),這是選項 C 正確描述的結果。

情境

先感受問題:四個 NumPy 函數,哪個描述配哪個?

「資料創智」的初級工程師陳亦宏在學 NumPy,遇到了一批考題。他需要把四個 NumPy 函數的名稱和它們的功能配對起來:

np.linalg.inv(A) → 算什麼?

v1 * v2 → 是元素相乘還是內積?

np.dot(v1, v2) → 算什麼?結果是多少?

np.linalg.eig(A) → 算什麼?

這四個函數在 ML 裡都很常見:線性代數(矩陣反矩陣、特徵值)和向量運算(點積)是神經網路、PCA、線性迴歸的數學基礎。

選項 C 說 np.dot(v1, v2) = np.int64(32),需要確認這個計算是否正確。

舊方法

四個 NumPy 操作各自做什麼?

  1. np.linalg.inv(A):計算矩陣 A 的「反矩陣(Inverse Matrix)」,不是行列式。滿足 A × inv(A) = 單位矩陣 I。行列式要用 np.linalg.det(A) 計算。inv 和 det 是完全不同的東西:inv 返回一個矩陣,det 返回一個純量。
  2. v1 * v2(星號乘法):在 NumPy 中,* 對陣列做「元素對元素(element-wise)」的乘法,結果是 [1×4, 2×5, 3×6] = [4, 10, 18],不是 [5, 7, 9]。[5, 7, 9] 是加法(v1 + v2)的結果,不是乘法。
  3. np.dot(v1, v2):計算「內積(Dot Product)」,是對應元素相乘後加總:1×4 + 2×5 + 3×6 = 4 + 10 + 18 = 32。返回一個純量(不是陣列),資料型別是 np.int64。
  4. np.linalg.eig(A):計算矩陣 A 的「特徵值和特徵向量(Eigenvalues and Eigenvectors)」,不是反矩陣。返回 (eigenvalues, eigenvectors),是 PCA 和主成分分析的核心計算。
  5. 混淆 inv / det / eig 的根本原因:三個函數都在 np.linalg 子模組下,縮寫接近(inv、det、eig),考試容易把功能互換。記法:inv = inverse(反矩陣,矩陣輸出);det = determinant(行列式,純量輸出);eig = eigenvectors(特徵值向量,tuple 輸出)。

新方法

驗算 np.dot(v1, v2) = 32

陳亦宏逐步計算 np.dot(v1, v2):

v1 = [1, 2, 3]

v2 = [4, 5, 6]

np.dot(v1, v2) = v1[0]×v2[0] + v1[1]×v2[1] + v1[2]×v2[2]

= 1×4 + 2×5 + 3×6

= 4 + 10 + 18

= 32

返回類型:np.int64(32)(因為 v1 和 v2 的元素都是整數,點積也是整數)

選項 C 完整且正確地描述了 np.dot 的計算結果。

這就是選項 C 講的:np.dot(v1, v2) 結果為 np.int64(32)。

錯選項

為什麼其他選項是錯的

Anp.linalg.inv 計算行列式

字面在說什麼

np.linalg.inv(A) 計算矩陣 A 的行列式。

為什麼不對

inv 是 inverse(反矩陣),不是 determinant(行列式)。計算行列式要用 np.linalg.det(A)。反矩陣返回一個和 A 同形狀的矩陣(本題是 2×2),行列式返回一個純量。兩者是完全不同的線性代數操作,雖然都和「可逆性」有關(行列式不為 0 才有反矩陣),但計算方法和結果形式完全不同。

誰會選錯

把 inv(反矩陣)和 determinant(行列式)的名稱混淆,或記不住各函數縮寫含義的人。

Bv1 * v2 = [5, 7, 9]

字面在說什麼

v1 和 v2 用星號相乘的結果是 [5, 7, 9]。

為什麼不對

[5, 7, 9] 是 v1 + v2 的結果(1+4=5, 2+5=7, 3+6=9),不是 v1 * v2。v1 * v2 在 NumPy 中是 element-wise 乘法:[1×4, 2×5, 3×6] = [4, 10, 18]。這是「加法和乘法」的基礎混淆,是考試中最常見的計算失誤。

誰會選錯

不熟悉 NumPy 的 element-wise 乘法語義,直覺上把 * 操作的結果當加法算的人。

Dnp.linalg.eig 計算反矩陣

字面在說什麼

np.linalg.eig(A) 計算矩陣 A 的反矩陣。

為什麼不對

eig 是 eigenvector/eigenvalue(特徵值/特徵向量),不是 inverse(反矩陣)。np.linalg.eig(A) 返回一個包含兩個元素的 tuple:(特徵值陣列, 特徵向量矩陣)。反矩陣要用 np.linalg.inv(A)。eig 和 inv 的縮寫非常不同,但考試中容易因為「都在 linalg 下」而混淆。

誰會選錯

沒有記住 NumPy linalg 子模組各函數縮寫含義,在 inv、det、eig 三個函數之間混淆的人。

變形題

同個考點下次怎麼變形

延伸

想再往下看,這 5 個

答案、題目或解析有問題?回報這題

出處:iPAS 經濟部產業人才能力鑑定 ・ 114 年第二梯次 iPAS AI 應用規劃師 中級 科目三 機器學習技術與應用 第 40 題

看官方原文 PDF

原題 © 經濟部產業發展署,AITerms.tw 僅作教學解析使用,本站解析以 CC BY-NC-SA 4.0 授權。