a visual walk-through

程式在執行時記憶體裡到底發生了什麼?物件導向是什麼?
NumPy variables, demystified.

用「倉庫 + 紙條」的比喻,看四行 Python 程式碼如何在記憶體中製造物件、貼上指向物件的標籤。

程式來源:114 年第二次 AI 應用規劃師-中級-第三科:機器學習技術與應用,第 40 題。

程式碼
.py
1import numpy as np2v1 = np.array([1, 2, 3])3v2 = np.array([4, 5, 6])4A  = np.array([[1, 2], [3, 4]])
STEP 00
準備開始

歡迎!這個動畫會把 Python 程式碼在記憶體裡發生的事情,一步一步用「倉庫」和「紙條」的比喻畫出來。

點上方 下一步 → 開始觀看。

電腦記憶體(一座大倉庫)
VARIABLES — 牆上的紙條 HEAP — 倉庫裡的實例 Class numpy 📦 (設計藍圖) MODULE — <module 'numpy'> @ 0x7F2A·C3D4·0000 .array(...) .zeros(...) .ones(...) .linspace(...) .dot(...) ⋯ 還有上百個工具 NDARRAY 實例 @ 0x7F2A·C3D5·0100 1 2 3 shape: (3,) dtype: int64 size : 3 NDARRAY 實例 @ 0x7F2A·C3D5·0240 4 5 6 shape: (3,) dtype: int64 size : 3 NDARRAY 實例(2D) @ 0x7F2A·C3D5·0380 1 2 3 4 [0] [1] shape: (2, 2) dtype: int64 ndim : 2 size : 4 np → 0x7F2A·C3D4·0000 v1 → 0x7F2A·C3D5·0100 v2 → 0x7F2A·C3D5·0240 A → 0x7F2A·C3D5·0380 [1, 2, 3] [4, 5, 6] [[1,2], [3,4]] .array() .array() .array()

📝 iPAS 考點提醒

這頁拆解 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 貼上去。

import numpy as np 做了什麼?

把 numpy 模組載入記憶體成為一個模組物件,並用紙條 np 指向它;之後 np.array 就是順著紙條找到模組、再取出裡面的 array 函式來用。

b = a 之後改 b,a 會變嗎?

會(對 list、ndarray 這類可變物件)。兩張紙條指向同一個物件,改的是同一份資料;要獨立副本得用 a.copy()。

list 和 ndarray 的 + 有什麼不同?

[1,2]+[3,4] 是串接成 [1,2,3,4];np.array([1,2])+np.array([3,4]) 是逐元素相加得 [4,6]。考題常用這個差異設陷阱。

考試怎麼考這類記憶體概念?

給幾行程式問最後印出什麼、兩個變數是否同一物件(is)、或改了某變數後另一個的值。畫「紙條 → 物件」圖就能穩穩答對。

ndarray 常被問的屬性有哪些?

shape(形狀)、ndim(維度數)、dtype(元素型態)、size(元素總數);例如 np.array([[1,2,3]]).shape 是 (1, 3)。

🧭 相關主題

← 返回 AI 學習與考證地圖