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

更新 發佈閱讀 7 分鐘
vocus|新世代的創作平台

再見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
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
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
最近有新的訂閱者加入, 想趁這個機會再分享一次學習心法與建議給第一次練習的讀者、同學們。 如果你本身已經很熟練演算法,那隨機挑題目練習ok,可以測試觀念是否正確,並且驗證寫code的效率與正確程度。 如果是剛畢業或還在學,以前沒有打過程式競賽。 想開始有系統地增強演算法&資料結構的能力
Thumbnail
最近有新的訂閱者加入, 想趁這個機會再分享一次學習心法與建議給第一次練習的讀者、同學們。 如果你本身已經很熟練演算法,那隨機挑題目練習ok,可以測試觀念是否正確,並且驗證寫code的效率與正確程度。 如果是剛畢業或還在學,以前沒有打過程式競賽。 想開始有系統地增強演算法&資料結構的能力
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
NumPy 是 Python 語言的一個擴充程式庫,支援高階大規模的多維陣列與矩陣運算的數學函式函式庫。 NumPy 2.0.0 是自 2006 年以來的第一個主要發行版本,此重要版本標誌著 NumPy 發展歷程中的一項重要里程碑,為使用者提供了豐富的增強功能和改進,並為未來的功能開發奠定了基礎。
Thumbnail
NumPy 是 Python 語言的一個擴充程式庫,支援高階大規模的多維陣列與矩陣運算的數學函式函式庫。 NumPy 2.0.0 是自 2006 年以來的第一個主要發行版本,此重要版本標誌著 NumPy 發展歷程中的一項重要里程碑,為使用者提供了豐富的增強功能和改進,並為未來的功能開發奠定了基礎。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News