《從零開始的資料科學筆記》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
留言分享你的想法!
avatar-img
Ethan的AI學習筆記
4會員
27內容數
我是一個不務正業的資料科學家,從零開始學習的路途上跌跌撞撞,跌過許多坑,也撞過許多牆... 當有人迷失方向時,希望這些筆記可以成為你的指南針。
你可能也想看
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
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