WEEK 4 必考 NOTE:NumPy 入門(四)

更新 發佈閱讀 17 分鐘

114學年度下學期|電腦程式與計算分析(二)CP & CA

WEEK 4 必考 NOTE:NumPy 入門(四)

高分必過重點整理 💻🐍🧮

一句話主線

Week 4 的核心,是把 NumPy 從「會建立陣列」提升到「會做真正的陣列運算與資料處理」,重點放在 indexing、slicing、broadcasting、聚合統計、矩陣運算與常見錯誤排查。


1) 這週在學什麼?

如果前幾週的 NumPy 已經讓你熟悉:

  • np.array()
  • 陣列形狀 shape
  • 基本索引
  • 基本四則運算

那麼到了 Week 4,通常就會更進一步進入真正常考的主題:

  • 進階 indexing / slicing
  • broadcasting 廣播機制
  • 聚合函數 aggregation
  • 二維陣列運算
  • 矩陣乘法
  • 條件篩選
  • 常見資料處理模板

這週最重要的不是背 API,而是理解一句話:

NumPy 的強大,不在於你會一個一個元素慢慢處理,而在於你能直接對整個陣列操作。


2) Week 4 最重要的主線

這週可以濃縮成一句話:

把 Python 的逐項迴圈思維,轉成 NumPy 的整批向量化思維。

所以你要特別熟悉五件事:

(1) 陣列切片

知道如何正確取列、取欄、取子矩陣。

(2) broadcasting

知道不同形狀陣列怎麼自動對齊運算。

(3) 聚合統計

像是 sum()、mean()、max()、min()、std()。

(4) 條件篩選

用布林陣列過濾資料。

(5) 矩陣運算

知道逐元素乘法和矩陣乘法不同。


3) 必考主題 A:NumPy 陣列切片與索引


1. 一維陣列索引

import numpy as np


a = np.array([10, 20, 30, 40, 50]) print(a[0])     # 10


print(a[-1])    # 50


print(a[1:4])   # [20 30 40]


必考觀念

  • 索引從 0 開始
  • a[1:4] 代表第 1 到第 3 個位置
  • 右邊不包含 4


2. 二維陣列索引

A = np.array([


    [1, 2, 3],


    [4, 5, 6],


    [7, 8, 9]


]) print(A[0, 1])   # 2


print(A[2, 2])   # 9


必考觀念

二維陣列的格式是:

A[列, 欄]

不是 A[列][欄] 才能用,但 A[列, 欄] 更標準、更快。


3. 取整列、整欄

print(A[0, :])   # 第 0 列 → [1 2 3]


print(A[:, 1])   # 第 1 欄 → [2 5 8]


必考觀念

  • : 代表全部
  • A[0, :] 是第 0 列全部
  • A[:, 1] 是第 1 欄全部


4. 取子矩陣

print(A[0:2, 1:3])

輸出:

[[2 3]


 [5 6]]


必考觀念

這題很常考:

  • 前面 0:2 控制列
  • 後面 1:3 控制欄


5. 必考陷阱

陷阱 A:列欄順序寫反

A[列, 欄] 不要寫成 A[欄, 列]

陷阱 B:切片右邊不包含

0:2 只到 1,不包含 2

陷阱 C:一維與二維觀念混淆

A[:, 1] 取的是一整欄,不是一個元素


4) 必考主題 B:NumPy 向量化運算


1. 為什麼 NumPy 快?

因為它不是靠 Python 的 for 逐個算,而是直接對整個陣列運算。


2. 基本四則運算

a = np.array([1, 2, 3])


b = np.array([4, 5, 6]) print(a + b)   # [5 7 9]


print(a - b)   # [-3 -3 -3]


print(a * b)   # [ 4 10 18]


print(a / b)


必考觀念

這裡的 * 是:

逐元素相乘

不是矩陣乘法。


3. 常數對整個陣列運算

a = np.array([1, 2, 3])


print(a + 10)   # [11 12 13]


print(a * 2)    # [2 4 6]


print(a ** 2)   # [1 4 9]


必考觀念

NumPy 可以直接對整個陣列加、減、乘、除,不用寫迴圈。


4. 常見數學函數

a = np.array([1, 4, 9])


print(np.sqrt(a))   # [1. 2. 3.]


print(np.exp(a)) print(np.log(a))



5. 必考陷阱

陷阱 A:把 * 當矩陣乘法

在 NumPy 中,* 預設是逐元素乘法。

陷阱 B:形狀不同不能亂算

不是所有 shape 都能直接加減乘除。


5) 必考主題 C:Broadcasting 廣播機制


1. 什麼是 broadcasting?

當兩個陣列 shape 不同,但符合 NumPy 規則時,會自動擴展後再運算。

這是 NumPy 超重要考點。


2. 最基本例子

a = np.array([1, 2, 3])


print(a + 10)


這裡 10 會自動被廣播成:

[10, 10, 10]

所以結果是:

[11, 12, 13]


3. 一維加二維

A = np.array([


    [1, 2, 3],


    [4, 5, 6]


]) b = np.array([10, 20, 30]) print(A + b)


輸出:

[[11 22 33]


 [14 25 36]]


必考觀念

b 會自動對每一列加上去。


4. 欄向量 broadcasting

A = np.array([


    [1, 2, 3],


    [4, 5, 6]


]) c = np.array([[100],               [200]])


print(A + c)


輸出:

[[101 102 103]


 [204 205 206]]


必考觀念

這次是每一列加不同值,因為 c 是欄向量形狀 (2,1)。


5. broadcasting 規則簡述

從尾端開始比 shape:

  • 相同 → 可以
  • 其中一個是 1 → 可以擴展
  • 其他情況 → 不行


6. 必考陷阱

陷阱 A:不知道為什麼 shape 不同還能算

因為 broadcasting 在背後自動擴展。

陷阱 B:以為所有不同 shape 都能算

不對,還要符合規則。

陷阱 C:列向量和欄向量搞混

(3,)、(1,3)、(3,1) 不一樣。


6) 必考主題 D:聚合函數 Aggregation


1. 最常考的聚合函數

a = np.array([1, 2, 3, 4, 5])


print(np.sum(a))    # 15


print(np.mean(a))   # 3.0


print(np.max(a))    # 5


print(np.min(a))    # 1


print(np.std(a))    # 標準差



2. 二維陣列的 axis

這是超高頻重點。

A = np.array([


    [1, 2, 3],


    [4, 5, 6]


]) print(np.sum(A))          # 全部加總 = 21


print(np.sum(A, axis=0))  # 每欄加總 = [5 7 9]


print(np.sum(A, axis=1))  # 每列加總 = [6 15]



3. axis 意義

axis=0

沿著列方向往下加,結果保留欄


→ 常理解成「每欄統計」


axis=1

沿著欄方向往右加,結果保留列


→ 常理解成「每列統計」



4. 經典題型

題型 1:每列平均

print(np.mean(A, axis=1))

題型 2:每欄最大值

print(np.max(A, axis=0))


5. 必考陷阱

陷阱 A:axis=0 和 axis=1 搞反

這是最常見失分點。

陷阱 B:忘記不寫 axis 就是全體一起算


7) 必考主題 E:條件篩選與布林陣列


1. 條件判斷可以直接作用在陣列上

a = np.array([1, 2, 3, 4, 5])


print(a > 3)


輸出:

[False False False  True  True]


2. 用布林陣列篩選

a = np.array([1, 2, 3, 4, 5])


print(a[a > 3])   # [4 5]


必考觀念

先產生條件,再把條件當索引。


3. 複合條件

a = np.array([1, 2, 3, 4, 5, 6])


print(a[(a > 2) & (a < 6)])   # [3 4 5]



4. 常見題型

題型 1:取偶數

print(a[a % 2 == 0])

題型 2:取大於平均值

mean_val = np.mean(a)


print(a[a > mean_val])



5. 必考陷阱

陷阱 A:複合條件要用 &、|

NumPy 不用 Python 的 and、or

陷阱 B:條件要加括號

例如:

(a > 2) & (a < 6)


8) 必考主題 F:矩陣乘法與轉置


1. 轉置 transpose

A = np.array([


    [1, 2, 3],


    [4, 5, 6]


]) print(A.T)


輸出:

[[1 4]


 [2 5]


 [3 6]]



2. 矩陣乘法

方法 1:@

A = np.array([[1, 2],


              [3, 4]])


B = np.array([[5, 6],               [7, 8]])


print(A @ B)


方法 2:np.dot()

print(np.dot(A, B))


3. 和逐元素乘法比較

print(A * B)   # 逐元素乘法


print(A @ B)   # 矩陣乘法


這兩個絕對不能混。


4. 必考陷阱

陷阱 A:把 * 當矩陣乘法

陷阱 B:矩陣 shape 不相容

矩陣乘法要滿足內維度一致。


9) Week 4 必考範例題


範例 1:建立陣列、切片、加總

import numpy as np


A = np.array([     [2, 4, 6],


    [1, 3, 5],


    [7, 8, 9]


]) print("第 2 列 =", A[1, :])


print("第 3 欄 =", A[:, 2])


print("左上 2x2 子矩陣 =")


print(A[0:2, 0:2]) print("每列總和 =", np.sum(A, axis=1))

print("每欄總和 =", np.sum(A, axis=0))


重點

這題整合了:

  • 二維索引
  • slicing
  • axis=0
  • axis=1


範例 2:broadcasting

import numpy as np

A = np.array([     [1, 2, 3],

    [4, 5, 6]

]) b = np.array([10, 20, 30]) print("A + b =") print(A + b)

重點

這題是最標準 broadcasting 範例。


範例 3:條件篩選

import numpy as np

a = np.array([5, 8, 12, 3, 7, 10]) print("大於 7 的元素 =", a[a > 7])

print("偶數元素 =", a[a % 2 == 0])

print("介於 5 與 10 之間 =", a[(a >= 5) & (a <= 10)])

重點

這題整合了:

  • 布林陣列
  • 條件篩選
  • 複合條件


範例 4:矩陣乘法與逐元素乘法比較

import numpy as np

A = np.array([[1, 2],               [3, 4]])

B = np.array([[5, 6],               [7, 8]])

print("逐元素乘法 =")

print(A * B) print("矩陣乘法 =")

print(A @ B)

重點

這題超常考觀念:

  • *
  • @


範例 5:統計分析

import numpy as np

scores = np.array([     [80, 75, 90],

    [85, 88, 92],

    [78, 82, 84]

]) print("全部平均 =", np.mean(scores))

print("每位學生平均 =", np.mean(scores, axis=1))

print("每科平均 =", np.mean(scores, axis=0))

print("最高分 =", np.max(scores))

print("每科最高分 =", np.max(scores, axis=0))

重點

這題就是期中期末最常見的資料分析模板。


10) 本週最容易失分的地方


1. axis=0 和 axis=1 搞混

這是第一大失分點。

2. * 和 @ 混淆

逐元素乘法和矩陣乘法差很多。

3. broadcasting 不理解 shape

不知道為什麼能算,或不知道為什麼不能算。

4. 複合條件用錯 and

NumPy 要用 & 和 |。

5. 切片列欄順序寫反

A[列, 欄] 一定要穩。


11) 考前速讀清單

考前 10 分鐘至少看這些:

一定要會

  • A[列, 欄]
  • A[:, 1]
  • A[0:2, 1:3]
  • np.sum(A, axis=0)
  • np.sum(A, axis=1)
  • A + b 的 broadcasting
  • a[a > 3]
  • A * B
  • A @ B

一定要記

  • axis=0 → 每欄
  • axis=1 → 每列
  • * → 逐元素
  • @ → 矩陣乘法
  • 複合條件用 &、|


12) 本週 1 分鐘速讀版

Week 4 的核心,是把 NumPy 從基本建立陣列,提升到真正能做資料處理與矩陣運算。

重點要掌握二維索引、切片、broadcasting、聚合函數、條件篩選與矩陣乘法。

考試最常輸的不是不會函數,而是 axis 搞反、* 和 @ 混淆、或布林條件寫錯。

真正高分關鍵,是看到資料就能直接用陣列思維整批處理,而不是退回 Python 逐項迴圈。


13) 一句收尾

Week 4 真正的高分關鍵,不是記住更多語法,而是你能不能開始用 NumPy 的向量化思維直接處理整批資料。

 

留言
avatar-img
「2060AIHANS 애한스|頂大修課紀錄研究室」
0會員
155內容數
「2060AIHANS 애한스|修課紀錄研究室」專門紀錄我在大學修課的學習軌跡:每堂課重點推導、作業解題、實驗量測、除錯筆記與延伸閱讀,皆以工程化方式整理成可複用模板。目標是讓知識可追溯、能力可量化,並把課堂收穫轉化為可長期複利的技術資產。
2026/03/18
期中考重點在於把 Python 進階內容整理成固定模板。要熟悉函式、list、dict、string、排序、搜尋、遞迴、檔案處理與綜合題拆解。高分關鍵不是重背語法,而是看到題目能快速分類、選對資料結構與處理流程,並避開型別、索引、排序與回傳值錯誤。
2026/03/18
期中考重點在於把 Python 進階內容整理成固定模板。要熟悉函式、list、dict、string、排序、搜尋、遞迴、檔案處理與綜合題拆解。高分關鍵不是重背語法,而是看到題目能快速分類、選對資料結構與處理流程,並避開型別、索引、排序與回傳值錯誤。
2026/03/18
Week 7 的核心,是把 Python 進階語法真正轉成「期中考可上場的解題能力」,重點放在綜合題拆解、函式整合、資料處理流程、除錯觀念與可重用模板。
2026/03/18
Week 7 的核心,是把 Python 進階語法真正轉成「期中考可上場的解題能力」,重點放在綜合題拆解、函式整合、資料處理流程、除錯觀念與可重用模板。
2026/03/18
Week 6 最適合做的,不是再學一堆新東西,而是回頭把前面這些主題徹底收斂: 函式 function list / dict / string 例外處理 檔案處理 模組化 遞迴 排序 sorting 搜尋 searching 資料整理與統計 list comprehension
2026/03/18
Week 6 最適合做的,不是再學一堆新東西,而是回頭把前面這些主題徹底收斂: 函式 function list / dict / string 例外處理 檔案處理 模組化 遞迴 排序 sorting 搜尋 searching 資料整理與統計 list comprehension
看更多
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
This is a short one because we were off to HK in the middle for my PhD graduation! We took the kids to the water park for the 1st time in Thailand… 
Thumbnail
This is a short one because we were off to HK in the middle for my PhD graduation! We took the kids to the water park for the 1st time in Thailand… 
Thumbnail
綠灣包裝工隊第四週在主場的比賽以29-31惜敗給明尼蘇達維京人隊。
Thumbnail
綠灣包裝工隊第四週在主場的比賽以29-31惜敗給明尼蘇達維京人隊。
Thumbnail
2016/6/26-7/2   我沒有看過媽媽買過化妝品,梳妝台上放了幾十年的化妝品,大多是以前跑船的叔伯送的,一直放成了古董。成長的過程中,家中唯一常聞到的香水味就是明星花露水。我童年洗澡,媽媽會滴幾滴花露水。直到現在,我仍然有買花露水的習慣,每當聞到花露水,就讓我從時光墜道回到童年的輕鬆
Thumbnail
2016/6/26-7/2   我沒有看過媽媽買過化妝品,梳妝台上放了幾十年的化妝品,大多是以前跑船的叔伯送的,一直放成了古董。成長的過程中,家中唯一常聞到的香水味就是明星花露水。我童年洗澡,媽媽會滴幾滴花露水。直到現在,我仍然有買花露水的習慣,每當聞到花露水,就讓我從時光墜道回到童年的輕鬆
Thumbnail
cs50 第四週課程 Recover 解題思路
Thumbnail
cs50 第四週課程 Recover 解題思路
Thumbnail
本週操作 這週超廢,除了在群聯做了一個韭判斷,拿本來要380補群聯的錢去買138勝一,被打臉的莫名其妙外,也就是三陽填息做了小價差,然後把6月砍出去的倉都建回來。 自有持股追蹤 群聯: 上週本來是要在董座加碼點的附近再補回,但是越想越不對(女權附體?),覺得GG法說已經預示消費性電子不好,i
Thumbnail
本週操作 這週超廢,除了在群聯做了一個韭判斷,拿本來要380補群聯的錢去買138勝一,被打臉的莫名其妙外,也就是三陽填息做了小價差,然後把6月砍出去的倉都建回來。 自有持股追蹤 群聯: 上週本來是要在董座加碼點的附近再補回,但是越想越不對(女權附體?),覺得GG法說已經預示消費性電子不好,i
Thumbnail
拿捏 職場上懂得排序輕重緩急,並將資源與時間投注在成長率、回報率高的地方,是重要的學習。 空中瑜伽 給自己準備的,開啟2022下半年的方式。
Thumbnail
拿捏 職場上懂得排序輕重緩急,並將資源與時間投注在成長率、回報率高的地方,是重要的學習。 空中瑜伽 給自己準備的,開啟2022下半年的方式。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News