NumPy 1.14 教學 – #08 用布林陣列當索引取值(Indexing with boolean array)

開始學NumPy之前至少先熟悉Python基礎使用方法,這樣再來看NumPy才不會那麼吃力!
Python3 教學、筆記

本文將會介紹如何以判斷式對篩選整個矩陣符合條件的元素,進而產生布林矩陣,以便我們用在整個矩陣的數值修改或判斷!這個用法在進行矩陣運算時很常用到。

練習範例同步放置於GitHub:Learn NumPy – GitHub

by Elements/ by Cells

判斷每一個元素 Elements / Cells

判斷矩陣a中每一個位置的數值是否符合我們設定的條件,再將這個判斷結果儲存成一個布林(boolean)矩陣。
布林矩陣的大小會跟矩陣a的大小一致,所以可以直接使用這個布林矩陣當作矩陣a的索引值,NumPy會篩選布林矩陣值為True的位置的元素。

本範例在第3行直接用條件 < 20 判斷是符合這個條件的元素位置,產生布林矩陣filter。
第11行處,直接選取布林矩陣filter為True的元素對應到矩陣a的位置的值更改為0。

Output

 

by Rows/ by Columns

依據 Rows / Columns 判斷

既然NumPy可以透過布林矩陣作為篩選條件過濾矩陣內的每一個元素,那一定也可以以這種方式對矩陣選取需要的Row或Column!做法也很簡單,建立一個布林陣列,陣列大小與這次的目標矩陣a的Row或Column數相等,就可以依據欲作篩選的維度進行篩選a[維度1, 維度2, …]。

 

Andy Wang

站在巨人的肩膀上仍須戰戰兢兢!

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料