用「倉庫 + 紙條」的比喻,看四行 Python 程式碼如何在記憶體中製造物件、貼上指向物件的標籤。
程式來源:114 年第二次 AI 應用規劃師-中級-第三科:機器學習技術與應用,第 40 題。
1import numpy as np2v1 = np.array([1, 2, 3])3v2 = np.array([4, 5, 6])4A = np.array([[1, 2], [3, 4]])
歡迎!這個動畫會把 Python 程式碼在記憶體裡發生的事情,一步一步用「倉庫」和「紙條」的比喻畫出來。
點上方 下一步 → 開始觀看。
這頁拆解 114 年第二次中級科目三第 40 題:import numpy as np 與 np.array(...) 四行程式在記憶體裡做了什麼。常見考法:變數是「貼在物件上的紙條」,a = b 不是複製而是兩張紙條指向同一物件,改一個另一個跟著變(list、ndarray 等可變物件);np.array 回傳有 shape、dtype 屬性的 ndarray;as np 只是取別名。易混點:list 的 + 是串接,ndarray 的 + 是逐元素相加;copy() 才產生新物件。情境題長相:「執行 b = a; b[0] = 9 後 a[0] 為何?」答 9。
想練情境題與詳解 → AI 學習與考證地圖
不是。物件住在記憶體裡,變數只是一張寫著地址的紙條;v1 = np.array([1,2,3]) 是先造出陣列物件,再把紙條 v1 貼上去。
把 numpy 模組載入記憶體成為一個模組物件,並用紙條 np 指向它;之後 np.array 就是順著紙條找到模組、再取出裡面的 array 函式來用。
會(對 list、ndarray 這類可變物件)。兩張紙條指向同一個物件,改的是同一份資料;要獨立副本得用 a.copy()。
[1,2]+[3,4] 是串接成 [1,2,3,4];np.array([1,2])+np.array([3,4]) 是逐元素相加得 [4,6]。考題常用這個差異設陷阱。
給幾行程式問最後印出什麼、兩個變數是否同一物件(is)、或改了某變數後另一個的值。畫「紙條 → 物件」圖就能穩穩答對。
shape(形狀)、ndim(維度數)、dtype(元素型態)、size(元素總數);例如 np.array([[1,2,3]]).shape 是 (1, 3)。