NumPy 1.14 教學 – #04 索引(Indexing)、切片(Slicing)、迭代(Iterating)、From Function

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

本篇將介紹如何使用NumPy對於陣列依據索引值(Indexing)存取資料、切片(Slicing)以及使用迴圈對1維矩陣、多維矩陣迭代取值等方法。最特別的是,本篇會介紹From Function的使用方法以及其用途!

本文章範例也同步存放在:Learn NumPy – GitHub

索引

索引(Indexing)的用途不外乎就是為了要從陣列和矩陣中取值,但除此之外有很多種功能!
可以取出連續區間,還可以間隔取值!

選取連續區間 [a:b]

贊助廣告

選取索引值a到b的資料x[a:b]
a:選取資料的起始索引,不指定表示從頭開始
b:選取資料的結束索引+1,不指定表示直到陣列結束

Output

 

切片

切片(Slicing)的用途和索引(Indexing)很像!
若能活用便能加快程式撰寫速度!

間隔選取[::c]

以1維陣列來說明x[a:b:c]
a:選取資料的起始索引
b:選取資料的結束索引+1
c:選取資料間隔,以索引值可以被此值整除的元素,不指定表示1

從index為3起算,每數到4的元素值都改為9999,直到第8個元素(index為7)為止

Output

 

倒序[::-1]

只是單純的把順序反過來,並無數值大小比較

Output

 

迭代

迭代(Iterating)比較熟悉一點,可以說就像foreach一樣的使用方法

Output

 

多維陣列在for loop中取值時,會以第一維度為優先!
以二維陣列為例:一層for loop優先獲取的陣列內容,就是第一維度每row的內容!

Output

 

直接將矩陣內所有元素扁平化,依序取出所有元素!此功能必須搭配for-loop, while-loop使用!
扁平化就會變成一維陣列!

Output

 

From Function

什麼是From Function?
格式是一種可以透過一個自定義的函數和陣列座標值(index)來建構陣列的方法!
所以,需要先建立一個函數!

np.fromfunction(函數名稱, 形狀, 資料型別)
下列範例設定的參數分別是:
函數my_f(row, col),會用row*5 + col作為每一個陣列位置的數值。
形狀為(5, 5):就代表要產生5-by-5的矩陣!
資料型別就不必多解釋了,就是產生型別為int的矩陣!

Output

 

Andy Wang

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

發表迴響

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