《從零開始的資料科學筆記》Day#2: NumPy進階

更新 發佈閱讀 7 分鐘
raw-image

再見NumPy

在學習完上一篇NumPy入門教學後,可以接著熟悉一下NumPy進階,這部分包含了許多資料前處理上常用的技巧和語法。 其實有更多的語法我沒有列出來,因為不只你們記不住,我也記不得! 這邊整理的都是比較常用的部分,其他函數等你們有用到的時候自然會知道~

🎯 目標:掌握 broadcasting、masking、軸向操作、reshape、矩陣運算 等技巧

1. Broadcasting (廣播運算)

a = np.array([[1, 2], [3, 4]]) # 建立2x2陣列
b = np.array([10, 20]) # 建立1x2陣列

# 輸出
print(a + b)
[[11 22]
[13 24]]

說明

  • 進行陣列運算時會自動將兩陣列擴展成維度相同的陣列
  • 維度小的擴展成維度大的
  • 前提是兩陣列有辦法透過加減乘除擴展成形狀一樣
  • 此範例的b就會先擴展成[[10, 20], [10, 20]]才會跟a相加

2. Boolean Masking(布林遮罩)

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

# 輸出
print(mask) # [False False False True True]
print(a[mask]) # [4 5]

說明

  • 可用於當成Flag並進行值的篩選

3. axis操作

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

print(np.sum(a)) # 10 (全部相加)
print(np.sum(a, axis=0)) # [4 6](欄加總)
print(np.sum(a, axis=1)) # [3 7](列加總)

說明

單就二維陣列來說:

  • axis = 0: 以column為基準
  • axis = 1: 以raw為基準

🎯陣列還可以是三維以上,在此暫不討論

4. reshape() 與 flatten()

a = np.arange(6)         # [0 1 2 3 4 5]
b = a.reshape((2, 3)) # [[0 1 2], [3 4 5]]
c = b.flatten() # [0 1 2 3 4 5]

說明

  • reshape(): 將陣列維度重組成指定維度(:thumbsup: 很好用!!!)
  • flatten(): 將多維陣列完全攤平成一維陣列

5. np.where() 與 條件篩選

a = np.array([1, 2, 3, 4])
result1 = np.where(a % 2 == 0, a, 0)
result2 = np.where(a > 3)

# 輸出
print(result1) # [0 2 0 4]
print(result2) # [3]

說明

  • np.where(條件, 值1, 值2)(:thumbsup: 很好用!!!)
    • 當陣列中的值達到條件則填入值1
    • 沒達到條件者填入值2
  • np.where(條件)
    • 當參數只放入條件時,符合條件的值則回傳index
  • 另有np.argwhere()可以回傳多維座標的index

6. np.unique()

a = np.array([1, 2, 2, 3, 3, 3])
values, counts = np.unique(a, return_counts=True)

# 輸出
print(values) # [1 2 3]
print(counts) # [1 2 3]

說明

  • 找出不重複的值,並統計每個值出現的次數

7. np.clip()

a = np.array([-1, 0.2, 0.5, 1.5])

np.clip(a, 0, 1) # [0. 0.2 0.5 1. ]

說明

  • 可以限制數值在一定的範圍內
  • np.clip(陣列, 下限, 上限)

8. 矩陣乘法 np.multiply()與np.matmul()

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

print(np.matmul(a, b))
print(np.multiply(a, b))
print(a * b) # 同上

# 輸出
[[19, 22],
[43, 50]]

[[ 5, 12],
[21, 32]]

[[ 5, 12],
[21, 32]]

說明

  • np.multiply(): 一般的element-wise乘法
  • np.matmul(): 矩陣乘法

9. np.argsort() 與 np.sort()

a = np.array([10, 5, 8])

sorted_a = np.sort(a) # [5 8 10]
indices = np.argsort(a) # [1 2 0]

說明

  • np.sort(): 針對數值進行小到大排序
  • np.argsort(): 同樣的排序方法,但是回傳數值的index 🎯若要進行大到小的排序,則將結果直接反轉,至於如何反轉...自己找吧!!!

10. 判斷數值型態

a = np.array([1.0, np.nan, 3.0])
print(np.isnan(a))

b = np.array([1.0, np.inf, -np.inf, 5])
print(np.isinf(b))

print(np.isnan(a).all())
print(np.isinf(b).any())

# 輸出
[False True False]
[False True True False]
[False]
[True]

說明

  • np.isnan(): 判斷是否為nan(Not a number)
    • np.nan
    • 資料處理常用
  • np.isinf(): 判斷是否為無限值
    • np.inf
  • .all(): 所有都是True則回傳True
  • .any(): 只要有一個是True則回傳True
留言
avatar-img
Ethan的AI學習筆記
8會員
33內容數
我是一個不務正業的資料科學家,從零開始學習的路途上跌跌撞撞,跌過許多坑,也撞過許多牆... 當有人迷失方向時,希望這些筆記可以成為你的指南針。
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
NumPy 是 Python 語言的一個擴充程式庫,支援高階大規模的多維陣列與矩陣運算的數學函式函式庫。 NumPy 2.0.0 是自 2006 年以來的第一個主要發行版本,此重要版本標誌著 NumPy 發展歷程中的一項重要里程碑,為使用者提供了豐富的增強功能和改進,並為未來的功能開發奠定了基礎。
Thumbnail
NumPy 是 Python 語言的一個擴充程式庫,支援高階大規模的多維陣列與矩陣運算的數學函式函式庫。 NumPy 2.0.0 是自 2006 年以來的第一個主要發行版本,此重要版本標誌著 NumPy 發展歷程中的一項重要里程碑,為使用者提供了豐富的增強功能和改進,並為未來的功能開發奠定了基礎。
Thumbnail
本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
Thumbnail
本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
Thumbnail
最近有新的訂閱者加入, 想趁這個機會再分享一次學習心法與建議給第一次練習的讀者、同學們。 如果你本身已經很熟練演算法,那隨機挑題目練習ok,可以測試觀念是否正確,並且驗證寫code的效率與正確程度。 如果是剛畢業或還在學,以前沒有打過程式競賽。 想開始有系統地增強演算法&資料結構的能力
Thumbnail
最近有新的訂閱者加入, 想趁這個機會再分享一次學習心法與建議給第一次練習的讀者、同學們。 如果你本身已經很熟練演算法,那隨機挑題目練習ok,可以測試觀念是否正確,並且驗證寫code的效率與正確程度。 如果是剛畢業或還在學,以前沒有打過程式競賽。 想開始有系統地增強演算法&資料結構的能力
Thumbnail
在程式中,了解資料型態是相當重要的。 為什麽? 因為許多error,常常都是因為資料型態不正確所導致的。 舉個例子,在python中: a = 1 + 2 print(a) 結果就是3 a = = "1"+"2" print(a) 結果就是12 是不是差很多? 所以今天我來介
Thumbnail
在程式中,了解資料型態是相當重要的。 為什麽? 因為許多error,常常都是因為資料型態不正確所導致的。 舉個例子,在python中: a = 1 + 2 print(a) 結果就是3 a = = "1"+"2" print(a) 結果就是12 是不是差很多? 所以今天我來介
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
在這篇文章中,我們講述瞭如何使用numpy.where方法查找Numpy數組中值的索引。除了介紹了numpy.where的基本用法外,還舉了一些應用實例進行了詳細說明。文章最後提供了其他應用領域以及相關參考文獻。
Thumbnail
在這篇文章中,我們講述瞭如何使用numpy.where方法查找Numpy數組中值的索引。除了介紹了numpy.where的基本用法外,還舉了一些應用實例進行了詳細說明。文章最後提供了其他應用領域以及相關參考文獻。
Thumbnail
NumPy在圖像處理、機器學習、數學和統計學等領域中被廣泛應用。 以下是一些常見的應用場景: 數據處理和分析: NumPy提供了高效的多維數組(nd array)和相應的操作函數,使得對大型數據集進行快速、有效的操作變得容易。
Thumbnail
NumPy在圖像處理、機器學習、數學和統計學等領域中被廣泛應用。 以下是一些常見的應用場景: 數據處理和分析: NumPy提供了高效的多維數組(nd array)和相應的操作函數,使得對大型數據集進行快速、有效的操作變得容易。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News